Patriot Missile Floating-Point Bug Misses Incoming Scud, 28 US Soldiers Killed

What happened
On 25 February 1991, an Iraqi Scud missile struck a US Army barracks in Dhahran, Saudi Arabia, killing 28 soldiers and wounding 98 — the deadliest single attack on US forces during the Gulf War. The Patriot missile battery stationed to defend the barracks failed to engage the Scud because its radar tracking gate had drifted by 687 metres due to an accumulating floating-point error in the system clock. After 100 hours of continuous operation, the 0.3433-second time error shifted the predicted Scud position far outside the engagement window. The intercept attempt was never even initiated.[1]
What went wrong
The Patriot's internal clock incremented a 24-bit integer register every 1/10 second. Time was computed by multiplying this counter by a 24-bit binary representation of 0.1 — a non-terminating fraction in binary. The resulting truncation error of 9.5×10⁻⁸ seconds per tick was negligible in the short term, but accumulated to 0.3433 seconds over 100 hours of operation, enough to displace the tracking gate by 687 metres. The US Army had been notified of the drift problem eight days before the Dhahran attack and a software patch existed — but it had not yet been deployed to all batteries in the field.[1]
Lesson learned
Floating-point and fixed-point representation errors accumulate over time in long-running systems. Safety-critical software must account for numerical drift and implement periodic recalibration. A known bug plus a delayed patch deployment is not an acceptable risk profile in a system designed to stop incoming missiles. The Dhahran attack established the legal and engineering precedent for floating-point accuracy requirements in defence software.
Sources
- [1]
External links can go dark — pages move, paywalls appear, domains expire. Every source above includes a Wayback Machine snapshot link as a fallback. All citations are best-effort research; if a source contradicts our summary, the primary source takes precedence.