Jump to top of document
Jump to top of document
ACS home page

Year 2000 (Y2K) and Year 2038 compliance

The approach of year 2000, was quite a challenge for the computer industry, as many older software and hardware systems, wasn't designed with this situation in mind.  The problems involves not only pure date calculating routines, e.g. number of months between two dates, but also more subtle consequences, like validation of dates entered, where many systems would simply fail, at the turn of the century into year 2000.

TCS and WinTCS did very early on, support 4-digit year representations, thereby avoiding the Y2K issue completely, and all date routines were also checked for compliance with regard to the year 2000 leap year situation.


Signed versus unsigned 32-bit - running to year 2038 or 2106 ?

The internal clock a UNIX system, counts the number of seconds, since the birth of UNIX, defined as 00:00:00 GMT on January 1st, 1970.  Most systems hold this value in a signed 32-bit variable, which can not hold any number larger than 2,147,483,647 - which corresponds to :

     January 19th in year 2038 at 03:14:07 GMT/UTC time zone

the following second, this value will wrap around and become the huge negative number -2,147,483,648 - which will definitely break all time and date-calculating routines in a computer system.

With unsigned 32-bit variables things look a lot better, as the highest number is then 4,294,967,295 corresponding to :

     February 7th in year 2106 at 06:28:15 GMT/UTC time zone

Before then, all systems needs to be changed to 64-bits or higher.


The date range of TCS and WinTCS

TCS and WinTCS are using unsigned 32-bit variables and routines everywhere, and will therefore continue to run until year 2106, and will not have a problem with the upcoming year 2038 issue.

The valid date range for TCS and WinTCS is :

     From the birth of TCS, 01/01/1985 up to and including 05/02/2106,
     which is about 100 years from now.


ACS home page Jump to top of document Next page