On January 19, 2038 at 03:14:07 UTC, a number of machines will believe, for the span of a single second, that they have traveled back in time to December 1901. It is neither an electrical failure nor the result of a cyberattack. It is the mathematical culmination of a decision made by a handful of engineers in a New Jersey laboratory more than fifty years ago.
The story begins with Unix, developed at Bell Labs in the late 1960s. To measure time, its creators chose a simple method: count the seconds elapsed since a starting point set to January 1, 1970 at 00:00 UTC. This originates from an old and central choice of Unix computing, which counts the number of seconds elapsed since January 1, 1970 at 00:00:00 UTC. This counter, stored in a 32-bit signed integer, could technically overflow beyond a certain value. No one at the time imagined that Unix would endure for seventy years later, spread across billions of devices that did not even exist in the wildest dreams of its designers.
Key takeaways
- A counter created in 1970 at Bell Labs will overflow in exactly 14 years
- Why no one can fix the billions of embedded devices that depend on it
- This cost could exceed the Y2K bug for an unexpected reason
A mathematical limit, set to the tenth of a second
The math is unforgiving. As long as this value is stored in a 32-bit signed integer, its upper bound remains fixed at 2,147,483,647 seconds, which corresponds exactly to January 19, 2038 at 03:14:07 UTC. Once this threshold is crossed, the sign bit flips and the counter becomes negative. The result? The next second, written in binary, equals −2,147,483,648 in two’s complement, i.e., more than 2 billion seconds before 1970, precisely December 13, 1901 at 20:45:52.
Concretely, a machine still relying on this format doesn’t stop functioning. It keeps running, but convinced it is in the early years of the 20th century. A security certificate that expired 137 years ago, a billing system that recalculates interest for more than a century, an access control system that refuses to open a door because its validity date is “in the past”… the concrete scenarios are plentiful. And the problem can even arise well before the deadline: errors can appear whenever software handles distant dates, calculates deadlines, assigns a data lifetime, or generates certificates valid for a very long time.
Amusingly, not all Unix systems are treated the same. On Unix-type systems that represent time with an unsigned 32-bit integer, in accordance with the POSIX standard, the deadline is pushed to 2106 rather than 2038, but these systems remain a minority. A significant nuance, often overlooked in the more alarmist versions of this story.
The real obstacle: billions of devices that cannot be updated
Here is where things really get tricky. Moving to a 64-bit integer solves the problem for such dizzying time spans that they exceed comprehension. The format has spread far beyond desktop computers: industrial automation devices, smart electric meters, network boxes, surveillance cameras, medical devices, embedded controllers in automobiles. The risk does not come from a 32-bit processor, but from firmware that’s frozen, from a manufacturer that might no longer exist in 2038, and from a device’s service life that crosses this deadline.
That is the difference with a simple software patch. Updating a smartphone or a cloud server is routine. Recompiling the firmware of an industrial automation unit installed in a factory for twenty years, locating the source code of a network box whose maker has vanished, or physically swapping a meter buried under a city street, is a completely different challenge. Many 32-bit embedded systems face constraints of limited resources, inherited code, and long lifespans, often between ten and twenty years. Some equipment installed today will still be in service in 2038, with no plan to touch it by then.
File systems illustrate this transition well, still far from complete. Linux kernel documentation notes that the old V4 format of XFS cannot store timestamps beyond 2038, which led to its deprecation in favor of the V5 format. The Linux kernel itself is moving forward as well: several historic interfaces have been replaced because their time fields overflow in 2038 on 32-bit architectures, and the kernel now recommends 64-bit equivalents. A patient, patch-by-patch effort conducted for years.
A cost that could exceed the Y2K bug
People endlessly compare this with the infamous Y2K bug, and for good reason. That episode cost hundreds of billions of euros worldwide, simply to fix two-digit year dates. The 2038 problem promises to be of a different, potentially more devious nature, because it affects not only centralized databases but physical objects dispersed everywhere—often invisible, sometimes forgotten in a boiler room or an electrical grid.
Major vendors, however, have largely anticipated it. Almost all computers, servers, and smartphones sold since the early 2020s already run on 64-bit architectures, making the problem structurally obsolete for that segment. But modern computing also relies on a sea of invisible devices, those installed once and never revisited: industrial sensors, legacy payment terminals, medical equipment certified to avoid modifications without months of homologation.
One question remains that few people dare to ask outright: in 2038, who will still know that a vending machine, an elevator, or a dam valve is running on an electronic component designed in the 2000s, never updated, and about to make us think we’ve returned to the presidency of William McKinley?
Sources: cnc-expertise.com | tangente-mag.com