Time is stored as a floating-point number between 0 and 1.

So, something like thirty minutes past midnight would be something like 0.02 and 13:00 would be about 0.54
0.54 - 0.02 = -0.52 => negative 12 1/2 hours

Two solutions:
1) Add date information
The reason time is stored as a floating point between 0 and 1 is becuase dates are stored as integers from day 1 at the start of the calendar to now; that way date+time can be stored as one big ol' number in the cell.
1000.02 - 999.54 = the correct output

2) Add assumptions
=IF(start_time <= end_time, end_time - start_time, 24_hours - end_time + start_time)
This will assume that if the end_time happens "before" the start_time, it's actually the next day.