military⏱️ 5 min read

Patriot Missile Software Failure: How a 24-Bit Timing Error Caused the Dhahran Disaster

Documented Incident
Source: Court Filings & Public Records

Verified through official records, public filings, primary post-mortems, or corroborated journalism. Zero invented facts.

Patriot Missile Software Failure: How a 24-Bit Timing Error Caused the Dhahran Disaster
⚡ Executive Incident Briefing📖 60-Second Brief

How a 24-bit limited-precision time conversion accumulated over 100+ hours and caused the Patriot system to lose track of an Iraqi Scud at Dhahran in 1991.

📌 The ContextDuring the 1991 Gulf War, the US Army deployed Patriot Missile batteries to defend against incoming Iraqi Scud missiles.
⚠️ The Trigger
💥 The FalloutThe battery lost track of an incoming Scud missile, which struck a US barracks in Dhahran, killing 28 soldiers and injuring over 100.

1. Executive Summary

On February 25, 1991, during the Gulf War, an Iraqi Scud missile approached a United States Army barracks in Dhahran, Saudi Arabia. The airspace was defended by an American Patriot Missile battery (Alpha Battery, 2nd Battalion, 7th Air Defense Artillery). The battery had been operating continuously for over 100 hours.

When the Scud entered the airspace, the Patriot’s radar detected it. However, because of the finite precision of the software’s 24-bit limited-precision time conversion, the system’s internal clock had drifted by approximately 0.3433 seconds. (GAO) Because a Scud missile travels at approximately 1,676 meters per second, this timing error shifted the Patriot’s calculated range gate far enough that the incoming missile was no longer adequately centered within the tracking window.

The trajectory projection degraded so severely that the azimuth-elevation tracking radar swept an empty sector of airspace, dropping the ballistic track entirely. Alpha Battery therefore did not engage the missile. The Scud struck the barracks, killing 28 soldiers and injuring over 100 more. This incident remains one of the most deadly and heavily documented software engineering failures in military history.

2. What Was the Patriot System?

The Patriot (Phased Array Tracking Radar to Intercept on Target) was developed as a mobile air-defense system intended primarily for aircraft and cruise-missile threats. Its later use against short-range ballistic missiles imposed substantially different tracking requirements.

To intercept an object, the Patriot system performs a continuous prediction loop:

  1. Detect: Radar detects an anomaly.
  2. Track: The software calculates the velocity and trajectory.
  3. Predict: It creates a “range gate”—a small box in the sky where the object should be in the next radar sweep.
  4. Verify: If the object appears in the range gate on the next sweep, it is confirmed as a hostile target. If it does not appear, it is discarded as a false return (clutter or noise).

During the Gulf War, the Patriot was modified to intercept incoming ballistic missiles (Scuds). Scuds fly at Mach 5 (roughly 1,676 m/s), vastly faster than aircraft. At these speeds, the “range gate” calculations required absolute chronological precision.

3. The February 25, 1991 Failure

The exact timeline of the software degradation is documented by the General Accounting Office (GAO, 1992).

Parameter Digital Representation Physical Reality Evidence Status
System Uptime 100 hours 100 hours [DOCUMENTED] Battery Alpha had not been rebooted for 4 days.
Clock Drift Internal time lagging by 0.34 seconds Real-world time accurate [DOCUMENTED] Due to continuous fixed-point truncation of 1/10.
Tracking Gate Range gate shifted behind target Scud was physically ahead [DOCUMENTED — GAO] Target fell outside the acceptable window.
System Classification Track rejected Incoming Hostile Ballistic Missile [DOCUMENTED] Software dropped the track.
Casualties Track dropped before impact 28 American soldiers killed [DOCUMENTED] Scud struck the Army barracks.

4. How the 24-Bit Time-Conversion Error Worked

The failure was caused by how time was represented and converted within the system’s architecture.

4.1 The clock

The Patriot’s internal computer maintained elapsed time in tenths of a second.

4.2 The conversion

The tracking software needed elapsed time in a form suitable for its calculations, requiring conversion of the internal time value into a real-number representation.

4.3 The precision limitation

The computer used a 24-bit representation for this conversion. Because the available precision was finite, the conversion could not represent the increasingly large elapsed-time value with arbitrary accuracy. The important property was that the precision loss increased as the elapsed-time value grew.

4.4 The accumulation

Consequently, the tracking calculation became progressively less accurate as the Patriot remained continuously powered. The GAO calculated approximately 0.0034 seconds of timing inaccuracy after one hour, 0.0275 seconds after eight hours, and 0.3433 seconds after approximately 100 hours. (GAO)

4.5 The tracking consequence

That timing inaccuracy translated into a displacement of the predicted radar range gate. At approximately 100 hours, the GAO calculated a range-gate displacement of approximately 687 meters. (GAO)

5. Why the Error Accumulated

The underlying problem was runtime-dependent. The larger the internal clock value became, the greater the loss of precision in its conversion to a real number. The resulting timing inaccuracy therefore increased with continuous operation. The GAO independently verified this mechanism by analyzing the Patriot’s computer architecture, assembly-language tracking programs, and the machine instructions responsible for the tracking inaccuracy. (GAO)

6. Why 100 Hours Mattered

The timing error was runtime-dependent rather than a simple fixed error applied independently to every clock tick. As the internal time value increased, the 24-bit conversion could represent that value with progressively less precision. The resulting time inaccuracy therefore increased with continuous runtime.

The GAO calculated approximately 0.0034 seconds of inaccuracy after 1 hour, 0.0275 seconds after 8 hours, and 0.3433 seconds after approximately 100 hours. (GAO)

Because rebooting reset the elapsed time, the system had a runtime-dependent failure mode. Rebooting reinitialized the computer’s clock, resetting the accumulated timing error. The GAO notes that significant range-gate shifts could therefore be eliminated by rebooting every few hours. 8 hours of uptime had already produced measurable degradation; 100 hours pushed the error into a catastrophic regime.

7. How the Range Gate Failed

The timing error caused the Patriot’s predicted range gate to be displaced relative to the actual target. The GAO calculated that approximately 100 hours of continuous operation produced a 0.3433-second timing inaccuracy and an approximately 687-meter shift in the range gate. (GAO)

Runtime Time inaccuracy Approx. range-gate shift
1 h 0.0034 s 7 m
8 h 0.0275 s 55 m
20 h 0.0687 s 137 m
48 h 0.1648 s 330 m
72 h 0.2472 s 494 m
100 h 0.3433 s 687 m

The timing error shifted the calculated range gate far enough that the system could no longer maintain the incoming Scud’s track. Alpha Battery therefore did not engage the missile. (GAO)

8. The Warning That Came Before the Disaster

The system’s operational assumptions did not adequately account for prolonged continuous runtime in the Gulf War deployment. The tragedy wasn’t merely that there was a software bug. The system exhibited a measurable failure mode before the fatal incident, but the organization did not translate that evidence into an operational limit specific enough to prevent the failure.

The Patriot Project Office received Israeli data on February 11 showing significant range-gate degradation after approximately eight hours of continuous operation. (GAO) Officials investigated and made a software change, which was released on February 16. On February 21, the office sent users a warning that very long runtimes could shift the range gate, but critically, the warning did not specify what constituted a very long runtime. The operational assumptions surrounding the system did not anticipate the prolonged continuous runtimes encountered during the Gulf War.

9. The February 11–25 Warning-to-Failure Chain

The chain of organizational and technical events leading to the disaster:

  • Feb 11: Israeli data identifies significant range-gate degradation.
  • Feb 11-16: Patriot Project Office investigates and develops a software change.
  • Feb 16: Modified software version released.
  • Feb 21: Warning sent to Patriot users.
  • Feb 25: Dhahran battery has operated for >100 consecutive hours.
  • Feb 25: Scud is not tracked/intercepted.
  • Feb 25: Scud strikes barracks; 28 soldiers killed.
  • Feb 26: Modified software arrives in Dhahran.

10. What the GAO Established

Claim Source Confidence
~100-hour uptime GAO [DOCUMENTED — GAO]
0.3433 s time inaccuracy at ~100 h GAO [DOCUMENTED — GAO]
687 m range-gate shift at ~100 h GAO [DOCUMENTED — GAO]
28 deaths GAO [DOCUMENTED — GAO]
Feb 11 Israeli warning data GAO [DOCUMENTED — GAO]
Feb 16 modified software GAO [DOCUMENTED — GAO]
Feb 21 warning GAO [DOCUMENTED — GAO]
Warning lacked a quantified runtime threshold GAO [DOCUMENTED — GAO]
Exact original test-suite coverage Not established by GAO [UNKNOWN — INSUFFICIENT RECORD]
Engineers expected a daily reboot Not established [UNKNOWN — INSUFFICIENT RECORD]

11. What the Evidence Does Not Establish

What the evidence establishes:

  • A limited-precision time conversion error in converting tenths-of-a-second clock ticks into seconds accumulated monotonically with uptime.
  • After ~100 hours of continuous operation, the 0.3433-second timing drift shifted the radar tracking range gate by 687 meters, causing the system to drop the Scud track.

What the evidence does NOT establish:

  • Operator negligence; Army doctrine and user warnings sent before the incident did not specify a quantified continuous runtime limit.
  • The exact design rationale for the original 24-bit conversion choice in the legacy aircraft-tracking codebase.

12. Root-Cause Analysis

The Deeper Root Cause: Cumulative Error Without an Adequate Operational Bound

The numerical approximation itself was tiny and predictable. The dangerous property was that its error grew with elapsed runtime, while the operational environment eventually allowed runtime to become much larger than the assumptions underlying the original calculation.

The Second Failure: The Organization Knew

The sequence from February 11 to February 25 demonstrates the organizational failure. The organization observed evidence of runtime-dependent degradation and developed a software correction, but failed to establish and communicate a concrete operational limit before the corrected software reached the Dhahran battery.

13. Modern Engineering Lessons

This incident sits at the intersection of embedded systems, safety-critical software, and operational assumptions. A locally reasonable numerical trade-off (24-bit limited-precision time conversion) became unsafe when the software was operated for longer than the assumptions surrounding the calculation could tolerate.

Similar architectural assumptions—where software reuse and untracked runtime boundaries bypassed system safety interlocks—surfaced in The Therac-25 Radiation Disaster and the numerical conversion overflow of Ariane 5 Flight 501. Bound every operational assumption with automated assertions rather than relying on unquantified operator warnings.

14. Then vs. Now

System Parameter Before Corrective Direction
Time calculation 24-bit limited-precision time conversion Corrected time calculation
Operational doctrine No concrete runtime threshold Explicit runtime limitations/restart procedures
Warning communication “Very long run times” Quantified operational guidance

15. FAQ

What caused the Patriot Missile software failure?

The immediate technical cause was a cumulative timing error in the Patriot’s weapons-control software. A 24-bit register limitation caused a loss of precision when converting the system’s internal integer time to a real number. After more than 100 hours of continuous operation, the accumulated timing error shifted the radar’s tracking range gate enough to prevent the battery from maintaining the incoming Scud track.

Why was a 0.3433-second error fatal?

Scud missiles travel at approximately 1,676 meters per second (Mach 5). A 0.3433-second timing error shifted the Patriot’s calculated range gate significantly. The tracking calculation became inaccurate enough that the system looked in the wrong place for the incoming Scud and failed to maintain the track, causing the system to reject the track rather than engage the target.

Did they know about the bug before the attack?

Yes. The Patriot Project Office received Israeli data on February 11 showing a significant range-gate shift. A modified software version was released on February 16, and a February 21 message warned users about very long runtimes, but it critically did not define the threshold. The corrected software arrived at Dhahran on February 26, one day after the attack.

Was this a hardware or software failure?

It was an architectural mismatch. The underlying 24-bit representation imposed a finite precision constraint; the software’s time conversion lost precision to fit that register limitation. The resulting approximation was mathematically predictable, but its accumulated effect was not adequately bounded in the deployed operating context. The failure also involved the deployment context and operational handling of a known runtime-dependent software limitation.

16. Primary Sources

The Archivist’s Verdict

The Archivist’s Assessment: The Dhahran Patriot failure is a brutal lesson in operational drift. A small numerical approximation in the system’s time calculation accumulated with uptime until it became operationally significant. The decisive systems failure was not simply that the approximation existed, but that the deployment environment demanded prolonged continuous operation, the resulting degradation had already been observed, and the organization did not establish and communicate a concrete runtime limit before the corrected software reached the affected battery. The incident demonstrates how a mathematically tiny error can become a safety-critical failure when its accumulation is not bounded by either software design or operational doctrine.

🏛️

The Evidence Ledger & Source Audit

ErrorLedger Epistemic Standard & Public Receipts
Tier 1 Provenance
📌 Primary Source Manifest

Court Filings & Public Records

⚖️ Epistemic Claim Firewall
FACT Direct Public RecordINFERENCE Chronological DeductionARCHIVIST Systemic Diagnosis
📊 Consensus