The NTP nanokernel uses a 64.64 integer represention https://papers.freebsd.org/2000/phk-nanokernel/ because 32 bits isn't enough above the binary point because it runs out in 2038, and below the binary point you need 64 bits to accurately represent the nanosecond-scale frequency of the CPU's cycle counter to translate it to wall-clock time.
[1] http://web.mit.edu/tabbott/Public/quaddouble-debian/qd-2.3.4...
(i mean this is a legitimate reason, it's just amusing the extremes you'd have to go to to break 64bits).
Microseconds gets you to the year 2255; milliseconds to heat death.
1. https://www.wolframalpha.com/input/?i=January+1%2C+1970+%2B+...
It is easy to run out of bits when trying to use a single number as both an absolute date/time, and to compute relative durations between timestamps with reasonable precision. I've lost track of the number of bugs I've fixed where someone assumed a double would be big enough without doing the math.