More or less everyone knows that throughout the 1990s and 2000s, Seagate did not label their drives with a date of manufacture like everyone sane would do, but instead used a custom and somewhat mysterious/confusing “date code”. For reasons that I’m sure made sense to Seagate, but definitely made no sense to Seagate’s customers, the date code refers to Seagate’s fiscal year rather than a calendar year.
The good news is that Seagate no longer uses the cryptic date codes and prints a full date of manufacture on their drive labels, just like everyone else. The bad news is that there are countless millions of Seagate drives made before 2016 or so out there, and most of those drives only have the hard to decipher date code.
The four- or five-digit date code consists of a two-digit year, one- or two-digit week number (starting with 1), and one-digit day of the week (again starting with 1). If the week number is less than 10, the leading zero may be left out; that seems to have been the case on older drives, but later Seagate apparently switched to consistent five-digit codes.
Now, there are several online Seagate date conversion tools. So far, I have not found one that actually works properly. That is, they produce a date which is close but very often off by several days or even a week. While the few days probably don’t really matter in the end, I find it unnerving and sloppy, especially because it’s obvious that one can do better than that.
How do I know that the conversion tools are wrong? As it turns out, some Seagate drives were OEM drives made for IBM (and later Lenovo). For whatever reason—and I can think of several—IBM decided that wasting people’s time with date codes just won’t do, and required a human readable date on the drive label in addition the Seagate date code.
Note that some IBM/Lenovo OEM drives have two labels, the standard Seagate one and an additional IBM/Lenovo sticker. The Seagate date code as well as the human readable date are usually both on the Seagate label, i.e. printed by Seagate, and presumably printed by someone who knows exactly how to decode the date codes. These drives can be used as a sort of Rosetta Stone.
Let’s take a random Barracuda 7200.7 drive as an example. The Seagate date code is 04365, and in the corner of the drive label there’s 03MAR2004.
If we punch the date code into this converter, it claims that “04365 corresponds to 2004-03-06”. Obviously March 3rd is not March 6th so… no, it does not correspond.
On the other hand, this converter produces “March 10, 2004” which is different and also contradicts the actual drive label. How is this possible?
The core problem is that no one seems to know when Seagate’s fiscal year (FY) starts. Or rather many people think they do, but they really don’t. Some people claim that Seagate’s FY starts on July 1st of the previous calendar year. There is an oft-quoted document which claims that Seagate’s FY starts on the first Saturday in July. Said document further claims that the information was “confirmed by Seagate Warranty Support”, which leaves open the possibility that even people working for Seagate don’t quite know when Seagate’s fiscal year starts.
Even a brief glance at Seagate’s annual reports (Form 10-K) filed with the SEC shows that the start of Seagate’s fiscal year is neither July 1st nor the first Saturday in July. Or rather it is sometimes the first Saturday in July, and rarely–but not never–July 1st. But it can be also June 28th, for example—not July at all! And, mind you, those forms are filed under penalty of perjury, so they are far more trustworthy than some random web page (including this one).
After reviewing a number of Seagate SEC filings, I came to the conclusion that there is some element of truth to both of the supposed rules for Seagate’s FY start (“starts on July 1st” and “starts on the first Saturday in July”). Seagate’s fiscal year always starts on a Saturday, and thus always consists of an integer number of weeks. Except it does not start on the first Saturday in July, but rather the Saturday closest to July 1st. That can be any date from June 28th to July 4th.
I could not find any official confirmation of that. However, it matches the SEC filings for about 15 consecutive Seagate fiscal years (1995-2010), and using a specific day of the week closest to a certain calendar date is not unheard of. Using this method, each fiscal year has exactly 52 or 53 weeks and starts as close as possible to the desired date.
Using the above rule, I threw together a simple Python script to convert a Seagate date code to a calendar date. The results perfectly match more than a dozen different Seagate-made IBM and Lenovo OEM drives produced between 2002 and 2016.
With high certainty, the drive shown at the top of this article labeled with lot number A-01-0718-1 (corresponding to date code 07181) was made on October 28, 2006.
Breakdown
For a number of years, Seagate marked drives in several different but functionally equivalent ways. Consumer drives had a four- or five-digit “date code” in YYWD or YYWWD format. Enterprise drives had a five-digit lot number in two possible formats. Newer drives (circa 2010 and later) had a simple five-digit lot number in the same YYWWD format. Older drives had a longer lot number in an X-XX-YYWW-D format (the meaning of the X letters or numbers is unknown but not date related).
YY indicates the last two digits of Seagate’s fiscal year, which starts on the Saturday closest to July 1st of the previous calendar year.
WW is the week of the fiscal year, starting with week 1.
D is the day of the week, with Saturday being day 1 and Friday being day 7.
Conversion
It should be apparent that the date code indicates the day of a given fiscal year when the drive was built. Converting the WW and D quantities to the day ordinal number is trivial:
Day = (WW - 1) * 7 + D - 7
The resulting Day is the number of days to be added to the start of the fiscal year. Note that Day may be zero, indicating the same date on which the fiscal year started.
The only difficulty then lies in determining when the fiscal year started. For fiscal year YY (extended to 19YY or 20YY), first find out which day of the week was July 1st in calendar year YY – 1, then find the closest Saturday. There are many ways to do that, including a table lookup or a few conditionals.
Once the FY start date was calculated, the previously obtained Day is added, and that results in the drive’s manufacturing date. See sgdate.py for a sample Python implementation.
Constraints
It is known that the older lot number format appears on drives made at least as far back as 1989, some still under the Imprimis brand. It is currently unknown whether those lot number dates referred to the same start of financial year.
On Seagate’s consumer drives, date codes started appearing sometime in FY 1998 or perhaps slightly earlier, but drives from the mid-1990 and older do not have them.
Seagate style date codes have been seen on drives manufactured as late as 2016. Some drives made in 2016 and most if not all drives manufactured since 2017 no longer use the date code and instead show a human readable date in DDMMMYYYY format (where MMM is a three-letter English month abbreviation).
What’s Missing
It would be nice to know exactly when Seagate started and stopped using the cryptic date codes. It’s clear that for enterprise drives, Seagate used these as part of the long lot numbers starting circa 1989. For consumer drives, Seagate only started using the four- or five-digit date codes many years later. Medalist drives made in FY 98 have been seen in the wild; are there any older?
On the other end, 2016 appears to be the year when Seagate switched from date codes to a simple date of manufacture (DOM) on drive labels. Are there any newer drives with a date code, or older drives without one?
I have also not been able to verify when Seagate’s fiscal years started prior to 1995 because only filings for FY 1994 and later are available online, and the filings only specify the end of the fiscal year, not the beginning. There is no reason to assume that Seagate used different fiscal year start rules in the 1980s but a confirmation would be useful.