Modern Computers Might Stop Working on January 19, 2038
The Year 2038 could cause most modern computers to stop working if we don't prepare for it. This isn't because of some massive virus or degrading hardware, it has everything to do with how computers keep track of time.
Nearly every computer keeps time using a 32-bit processor, and counts forward from 00:00:00 UTC on the 1st of January 1970, referred to as 'the epoch'. This point in time was set as the standard for modern computing systems, but there's a major problem. Seven seconds after 3:14 am UTC on the 19th of January 2038, the 32-bit system which stores this time data in many computers will run out of positions.
The problem is similar to the Y2K issue, where a 2-digit value could no longer be used to encode the years 2000 or later, but is different in that this 32-bit bug is related to Unix-like systems and the Unix time format.
These similarities to the Y2K bug have widely lead to the 2038 problem being known as the Unix Millennium Bug.
The Unix Millennium Bug
Processors running 32-bit software can handle 232 different values or 4,294,967,295 different numbers within 4GB of memory. These systems store dates and times in 32-bit chunks. In reality, that large number of different values is halved for time keeping and other data storage applications. This leaves 2,147,483,647 positive values in which to store data.
This means that the last time that can be represented in the Unix 32-bit timecode is 231-1 or 2,147,483,647 seconds after 1 January 1970. Times after this point will wrap back around and be stored as negative numbers. This is caused by the storage system running out of integers to modulate, leaving only the sign to change. Computers will then interpret this as the 13th of December in 1901, and onward, rather than the actual date.
This may not sound like a big deal, but think about all the ways we use software. If you have licenses that are timestamped, you could suddenly lose access to important work documents, financial information and more.
Problems won't just start arising in 2038, any software that uses future dates will need to be fixed soon. Programs that work with dates 20 years in the future, like investment funds and advanced scheduling programs, needed to be fixed no later than 2018.
All of this may sound like a simple fix, just change the end date of the storage method, but it isn't that simple. Computer engineers behind games and apps that have waiting periods are already running into trouble in coding dates past January 19th, 2038. Because the storage method is 32-bit Unix, it's impossible for these 3rd party programmers to code dates past this time.
But so what, you may ask. The dates will be changed, programers are already expecting these issues and any potential problems won't cause panic, they'll just be quickly fixed. Well, this isn't exactly true.
Transportation systems, including flight equipment and modern cars, use embedded software that often goes untouched. Nearly everything in modern cars is controlled by its ECU, or onboard computer, which uses Unix timekeeping to track dates and times. This means that this bug could potentially interrupt ABS braking systems, electronic stability controls, traction controls, and GPS systems; they all could be significantly impacted.
All of these systems won't require access to dates to run, but some will, and it's hard to know which were programmed with date dependent code.
So, what's the fix? There isn't an easy one.
Embedded systems like those in cars and appliances are designed to last through the lifecycle of the device without a software update. Connected electronics can be quickly fixed with a software update when the time comes, but it is the embedded systems which will likely wreak the most havoc in 2038, since most won't be updated.
One option is to change the data storage system of the 32-bit integer to an unsigned 32-bit integer. This would theoretically allow for date storage all the way to 2106, but any system that used a date prior to 1970 would run into issues accessing this data.
If the data storage is increased to 64-bit, we would run into compatibility storage issues between older systems that only use 32-bit data storage.
There's no current universal solution to the problem, and even the most widely accepted fixes still have bugs in certain usage areas. However, there is positive news at the end of this.
Most new electronic equipment is designed to use the newer 64-bit data storage method. A date integer this large would extend 20 times longer than the estimated current age of the universe, approximately 292 billion years at 15:30:08 UTC on Sunday, 4 December 292,277,026,596. So your iPhone might just be safe until then.
Luckily, this issue is well known about and has been thoroughly studied, which means that computer engineers will likely solve the issues, at least with software that is still updated and maintained. However, as for that mint condition 1997 Prius sitting in your garage in 2038? Well, you may not be able to drive it after 3:14 AM on January 2038, thanks to its now-faulty onboard computer.