Playstation 3 leap year bug

As a big fan of Reingold & Dershowitz’s Calendrical Calculations, I’m always on the lookout for calendar-related programming news. This morning I heard (via @jamesthomson) that the Playstation 3 has a leap year bug that screwed up a lot of users yesterday when it became midnight GMT and the calendar flipped from February 28 to March 1.

In addition to my nerdy calendar interest, there was a family angle. My son plays Modern Warfare online with many of his friends. Last night he told me that a few of them were locked out because they couldn’t get online. It seemed weird that 3-4 kids would have network problems simultaneously, but now we know it wasn’t a coincidence.

Unless there’s a leak out of Sony, we may never learn the precise cause of the bug, but it must have acutely embarrassing for an international electronics giant to have to post this:

We are aware that the internal clock functionality in the PS3 units other than the slim model, recognized the year 2010 as a leap year.

Let’s first note that recognized is the wrong verb; you wouldn’t say you saw Ernest Borgnine in a restaurant and recognized him as Brad Pitt. How about mistook? More to the point: can you imagine spending millions of dollars to develop a product that can’t figure out whether a given year is a leap year or not?

My guess is that the firmware takes every even-numbered year to be a leap year. The PS3 came out in late 2006, too late for the bug to have an affect that year. 2008 was, of course, a real leap year, so the faulty code worked. Yesterday was the first time in the PS3’s product life that the bug would cause a problem.

I’m pretty sure that Sony has no real fix. The solution, like Microsoft’s solution for the Zune’s leap year bug back in 2008,1 was to simply wait until the calendar flipped again. Now that February 29 March 1 is over in the GMT zone, the bug is safely tucked away. If my guess is right, it won’t resurface until 2014, by which time most “fat” PS3s will be out of service.



Comments are closed.