This one just bit us a today.
The documentation for TickCount on MSDN say that this value is always positiove:
The TickCount property handles an overflow condition by resetting its value to zero. The minimum value returned by TickCount is 0.
And in another place in the docs:
The value of this property is derived from the system timer and is stored as a 32-bit signed integer. Therefore, the elapsed time will wrap around to zero if the system is run continuously for 24.9 days.
However, in MSDN2, the docs say:
TickCount will increment from zero to Int32.MaxValue for approximately 24.9 days, then jump to Int32.MinValue, which is a negative number, then increment back to zero during the next 24.9 days.
I remembered the original docs from 1.1 and so never had any reason to doubt the potential values. Apparently, in 1.1 it could go to negative numbers as well, though I have not checked that.
This bug is a female dog to find too – it will only show after 25 days without a reboot.