November 1996

Software Bug Costs $363 Million

On June 4 the European Space Agency's Ariane 5 rocket, on its first flight, veered off course and exploded approximately 40 seconds after liftoff. The cost of this failure is estimated to be $363 million. Since this was considered a test flight, neither the rocket nor the four science satellites it carried were insured.

Why did the rocket veer off course? The on-board computer told it to, because it received faulty data from the inertial reference system (known as SRI). The SRI measures the position and motion of the rocket in space.

Why did the SRI send bad data? Its computer had encountered a software bug: it tried to store a 64-bit floating point number in a 16-bit signed integer, but the number was too big to fit. So the SRI was running a diagnostic program and it was sending test patterns to the computer controlling the rocket!

Since the SRI is a mission-critical component, it has a backup -- an identical piece of hardware. The software was also identical, so the backup had already failed because of the same bug. The redundancy was only intended to handle random hardware failures, not software bugs.

What is the moral here? Perhaps only this: it is impossible to write bug-free software, even in a 10-year, $7 billion project. We shouldn't expect lesser efforts to be totally free of software bugs, and the goal should be to minimize the impact of bugs when they do occur.


The Year 2000 Problem

What year is 1/1/00? Is it 1900 or 2000? That, in essence, is the Year 2000 Problem.

As a convenience to computer users who must enter dates, and sometimes to save computer storage space, programs often use two digits for the year. Dates usually reflect relatively recent events, so it is a convenience not to have to enter a four-digit year. Of course, even now, two digits are not always sufficient. The date of publication of a book, for instance, could be 1896 or 1996. A library card catalog, for instance, must handle both.

If software is written with the year 2000 in mind, it can usually accept a two-digit year without difficulty. For example, in RTG Bills, our legal time and billing software, we assume a year between 50 and 99 means 1950 to 1999 and a year between 00 and 49 means 2000 to 2049. Internally, the full four-digit year is stored.

Unfortunately, many programs simply fail to consider the Year 2000 Problem. Two serious difficulties can occur:

(1) All two-digit years may default to 19xx. This can be an annoyance, if you have to enter a four-digit year, or a disaster, if the program cannot even accept and store a four-digit year.

(2) If a program does not store dates internally with a four-digit year, it probably won't be able to maintain the proper chronological order in its sorting and calculations. For example, an event in 2000 should come after an event in 1999, if a report is created in chronological order. And a warranty which goes from 1996 to 2006 should be 10 years long, not -90 (that is, 06 minus 96).

Example 1: WordPerfect 7

Consider sorting lines by date in a word processor. Corel WordPerfect 7 can sort lines of text. Suppose each line begins with a date. It will treat numbers separated by slashes as separate words, and you can tell it to sort by the third word (the year), then the first word (the month), and finally by the second word (the day).

Unfortunately, the program does not understand dates, so it cannot account for the year 2000. If you sort these three lines:

1/1/00 A date in 2000
1/1/95 A date in 1995
1/1/96 A date in 1996

the program puts 1/1/00 first because it is sorting the years numerically (00 comes before 95). You can only fix this by using a four-digit date for all entries:

1/1/1995 A date in 1995
1/1/1996 A date in 1996
1/1/2000 A date in 2000

Example 2: Quattro Pro 7

Unlike WordPerfect, Quattro Pro has a date format. Internally, it stores dates with the full four-digit year and it can display dates with various formats. However, if you enter a two-digit year, it always assumes the 20th century.

Here is a column of dates after they were sorted by Quattro Pro:

01-Jan-1896
01-Jan-00
01-Jan-95
01-Jan-96
01-Jan-2000

Notice that the entries are in the proper chronological order, assuming 01-Jan-00 means the first day of 1900.

Example 3: Quicken 3 and 5

When we entered 1/1/1896, both programs accepted it but changed it to 1/1/96 and sorted it as 1996 not 1896. The date 1/1/00 was not accepted as a valid date.

Both programs accepted 1/1/2000 but displayed it as 1/1'0, which appears to be a bug. When we clicked on the calendar icon in Quicken 5, it showed a calendar for January 2000, so perhaps only the display is affected.


RTG Bills and RTG Timer are trademarks of RTG Data Systems. Other company and product names may be trademarks of the companies with which they are associated.

Back to the RTG News page