What is the problem?.
It is not a fixed date, it is a difference from the last change.
The 99999 days means about 273 years of continuous use after the last time the password was changed (or initially set).
The last time a password was changed is related to UNIX time. A 32 bit signed value of seconds from
January 1, 1970. That is now the default counter for UNIX time. By that, the UNIX time will need to be changed before it overflows at (about) year 2038 (~ 19/Jan/2038). Since OpenBSD, NetBSD and the x32 ABI for Linux already use a 64 bit
time_t, it seems reasonable to expect that by year 2038 a signed 64 bit will be the default counter. That will allow to keep counting for about 292 giga additional years, or as explained in the NTP part:
The 64 bit second value is enough to provide unambiguous time representation until the universe goes dim.
The "last time a password was changed" is just the UNIX time divided by 24 hours, 60 minutes and 60 seconds. Today, it will be:
$ echo $(( $(date +%s) / 24 / 60 / 60 ))
That is a reduction of about 16 bits ( 2^16=65536 ) from the UNIX time.
In short, make your application able to use a 64 bit UNIX counter, and so:
What is the problem?