Time is Date.
And Date is a numeric figure which returns days and portion of days.
So
?(CDate("20:00:00"

-CDate("23:00:00"

)
Will return the portion of a day.
Which is the same as:
?CSng(CDate("20:00:00"

)-CSng(CDate("23:00:00"

)
There are 1440 minute in a day. So
?(CDate("20:00:00"

-CDate("23:00:00"

)*1440
will return 180 minutes, or 3 hours.
Between 12:21:06 and 12:20:54 only 12 seconds have passed.
You need to decide if this should round, round up only, round down only, or not round at all.
You round using the ROUND function or the CLNG or CINT functions.
You round down, just chopping off the decimal portion, using the FIX or INT functions.
You round up by adding 1 and using the FIX or INT function:
Round 1.95555 or 1.25555 up to the next whole number:
Int(1.95555 + 1) = 2
Int(1.25555 +1) = 2
Now, your problem is your formula is using the ABS and INT function on a negative number.
1 - 2.5 = -1.5
Using the INT function you will get -2 and the FIX function you will get -1:
?Abs(Int(1-2.5)) = 2
?Int((2.5-1)) = 1
?Abs(Fix(1-2.5)) = 1
Or, swap the numbers/Dates to be calculated around so that the larger numer/newer date is first....
See if this helps some (think about the possibilities, check out VB HELP on these functions, etc)