Sometimes one transposed letter in the code costs more than all the telescopes in the world.
🔭 The night of July 24, 2002, at the Belgrade Observatory was stifling and cloudless. Dušan Kečkić, a Serbian amateur astronomer, pointed his homemade 25-centimeter telescope at a patch of sky where, according to NASA’s ephemerides, the near-Earth asteroid 2002 NY40 was supposed to pass. The object was considered relatively large—about 800 meters in diameter—and was expected to fly by at a distance of 530,000 kilometers from Earth, which, by cosmic standards, is nearly a graze. Kečkić was preparing for routine photometry: take a series of images, measure the brightness, send the data to the Minor Planet Center. But the asteroid wasn’t there.
⚠️ The first thought was banal: clouds, a pointing error, a miscalculation in timing. Kečkić double-checked the coordinates, synchronized the clock, repointed the telescope. Nothing. Then he swung the telescope half a degree to the side—and there, in a completely unexpected part of the sky, he spotted a fast-moving object with the right brightness. The asteroid existed, but it wasn’t where the official orbit from the JPL Horizons catalog promised. The difference was nearly 0.4 degrees—in astronomy, that’s a chasm, like searching for a person in Belgrade and finding them in the next town over. Kečkić immediately sent a report to the Minor Planet Center in Cambridge, attaching precise coordinates and timestamps. He had no idea he’d just triggered a chain reaction that would paralyze the planetary defense system for three months.
🛰️ The problem wasn’t with the asteroid—it was with the foundation of the entire cataloging system. In 1998, NASA’s Jet Propulsion Laboratory conducted a massive data migration: transferring the orbital elements of thousands of small bodies from the old B1950 coordinate system (tied to the position of stars in 1950) to the modern J2000 (epoch 2000). The difference between the systems seemed cosmetic—just 20.5 arcseconds of polar shift and a bit of precession—but for precise trajectory calculations, it was critical. One JPL programmer, whose name was never made public, wrote a conversion script but made a classic mistake: forgot to apply the rotation matrix to part of the velocity vectors. The orbital elements formally converted to the new system, but their dynamics remained tied to the old one.
🔢 The error was microscopic—about 0.00015 degrees at the time of migration. But orbital mechanics is merciless to inaccuracies: every loop around the Sun compounded the error, like interest in a bank. By 2002, after dozens of orbits, the discrepancy for some objects had grown to several tenths of a degree—enough to lose an asteroid in the sky. The Sentry automated monitoring system, launched by JPL in 2002 to assess collision risks, ran on this data. It recalculated the trajectories of hundreds of near-Earth asteroids daily, building probabilistic corridors for close approaches decades into the future. And all these calculations relied on coordinates that were slowly, inexorably, drifting away from reality, like a crack in a skyscraper’s foundation.
📡 When Kečkić’s data reached JPL specialists, the first reaction was disbelief. Amateur observations often contain errors, especially from observatories without professional calibration. But Steven Chesley, one of JPL’s leading experts on small-body dynamics, decided to independently verify the orbit of 2002 NY40 using fresh data from professional telescopes. The result was shocking: the Belgrade amateur was right. What’s more, when Chesley started checking other recently discovered near-Earth objects, he found the problem was systemic. Of the 127 asteroids discovered between 1998 and 2002, 47 had anomalies in their orbits—all of them had been migrated by the same defective script.
🚨 On August 27, 2002, JPL made an unprecedented decision: temporarily shut down the Sentry system for a full data review. This meant that for several months, humanity was effectively flying blind—without automatic monitoring of potentially dangerous close approaches. Chesley’s team began manually rechecking the orbits of all suspicious objects, requesting archival observations, recalculating trajectories from scratch. Meanwhile, JPL programmers dissected the migration code line by line, trying to pinpoint where the glitch occurred. It turned out the error was hiding in one line of Fortran code: instead of multiplying the velocity vector by the full transformation matrix, the programmer had applied only its diagonal elements, ignoring the off-diagonal terms responsible for precession.
⚙️ The consequences were broader than just 47 incorrect orbits. The Sentry system used this data to build statistical risk models: it didn’t just track specific asteroids but also predicted the likelihood of discovering new dangerous objects in certain sky zones. The distorted orbits distorted these models too. It turned out that several regions, considered relatively safe, might actually contain undetected objects with high close-approach risks. The reverse was also true: some zones marked as observation priorities were overestimated.
🌍 The case of asteroid 2002 MN, discovered in June 2002—a month before Kečkić’s incident—was particularly painful. Initial calculations showed a 0.02% chance of Earth collision in 2022, putting the object at 1 on the Torino Scale (the first alert level). After recalculating with corrected coordinates, it turned out the real probability was 15 times lower, and the asteroid would pass 2.3 million kilometers farther away than expected. The false alarm sparked a wave of criticism in the scientific community: if the system could be so wrong, how much could its warnings about real threats be trusted?
🔬 The review dragged on until November 2002. During this time, JPL’s team not only corrected the orbits of 47 objects but also conducted a full audit of the entire database—over 2,800 near-Earth asteroids at the time. They found 12 more objects with less critical but still significant errors, tied to other stages of data processing. The Sentry system was only relaunched on November 18, 2002, now with new validation protocols: every orbit was cross-checked by at least two independent algorithms, and any discrepancy greater than 0.01 degrees was automatically flagged for manual review.
🏆 The paradox of the situation was that the error wasn’t discovered by one of the dozens of professional sky surveys, equipped with multimillion-dollar telescopes and automated systems, but by an enthusiast with equipment costing about $3,000. Kečkić had built his telescope from standard components, using a hand-polished mirror and a homemade mount based on a car jack. His observatory was on the roof of an apartment building in a Belgrade suburb, where light pollution made observing faint objects nearly impossible. But Kečkić had what automated systems lacked: human curiosity and a willingness to question data that everyone else took for granted.
🎯 After the incident, JPL invited Kečkić to Pasadena for consultations. He spent two weeks at the lab, explaining his observation methods and helping calibrate new verification protocols. It turned out his approach—comparing predicted and observed positions with precision down to a few arcseconds—was more sensitive to systematic errors than standard automated procedures, which averaged data and smoothed out anomalies. JPL incorporated elements of his method into Sentry, adding a module that specifically looked for discrepancies between predictions and observations, even if they fell within formal error margins.
📌 Today, the near-Earth object monitoring system is far more reliable, but the memory of the 2002 incident lives on. The modern Sentry-II system, launched in 2021, uses machine learning algorithms to automatically detect anomalies in orbital data. The near-Earth asteroid catalog has grown to over 34,000 objects as of 2026, and each undergoes multi-level validation. The ATLAS telescope in Hawaii scans the entire sky every 24 hours, discovering new objects and automatically cross-referencing them with predictions.
📌 Dušan Kečkić continues his observations from Belgrade, now with an upgraded telescope and the status of an official observer for the Minor Planet Center. His observatory code—A87—regularly appears in reports on orbit refinements. In 2024, he spotted another anomaly, this time in data on the rotation of asteroid 2015 TB145, and was proven right again. JPL now views the network of amateur observatories not as an auxiliary resource but as a critically important element of planetary defense—the human factor that sees what algorithms miss.
📌 The NEO Surveyor mission, scheduled for launch in 2027, will be the first space telescope specifically designed to search for potentially hazardous asteroids in the infrared spectrum. It will be able to detect objects as small as 140 meters, even if they approach from the Sun’s direction—a blind spot for ground-based telescopes. But even with this technology, NASA maintains the cross-verification protocols introduced after 2002: no orbit is considered reliable until confirmed by independent observations. The lesson from the Belgrade astronomer was simple and irrefutable—there are no small things in space, and the most dangerous error is the one no one questions.