Loss of precision in step_systime()
The new, reverted code, in step_systime() has a loss of precision:
fp_sys = dtolfp(sys_residual);
fp_ofs = dtolfp(step);
fp_ofs += fp_sys;
sys_residual and step are double and only have 53 bits of precision. But the l_fp needs 64 bits of precision, arguably 65 bits after 2026. Initial steps may be large, such as when a host has no valid RTC and thinks the current time is 1Jan70.
The C standard does not specify the precision of a double. C99 Annex F makes IEEE754 compliance optional and very few C compilers are fully IEEE754 compliant. C doubles may be may be 24 bits, 53 bits, or something else. Only rarely would a C double be able to hold a 65 bit number without loss of precision.
Best to avoid any doubt about precision and perform all the computations as long double or better as timespec(64). The fix might be increasing the precision os sys-residual and step before calling step_systime().
timespec(64) is my notation for a timespec containing a time64_t tv_sec and long tv_nsec.
The replaced code used timespec(64) on 64 bit binaries and thus worked well past 2200.