My understanding is that they used a floating point value for time measurements, and they used time since boot as a reference. After a long enough time since boot, there were not enough significant digits available to represent both time since boot, and accurately capture the different in time between two events.
The first Ariane 5 launch also had a failure relating to floating point math, in that case an overflow when converting to an int16:
Sure, but the point is that it did not have enough precision for both a large absolute value, and small time measurements, when based on time since boot.
No, this is not what happened. They converted the 24 bit fixed point value into a different format using different algorithms in different places of the system resulting in slightly different values. The failure was then caused by the difference between these values, i.e. different parts of the system did not agree on what the current time is.
The first Ariane 5 launch also had a failure relating to floating point math, in that case an overflow when converting to an int16:
http://www.di.unito.it/~damiani/ariane5rep.html