The 1975 Archive-Tape Audit That Made One Lab Recheck Every Fortran Run
In the late 1970s, a junior researcher at a computational physics lab was asked to re-run a single Fortran program from 1975. The task seemed routine: locate the archived tape, load it, and verify that the output matched the published tables. Instead, the tape wouldn't recompute. The numbers drifted, then diverged. What started as a simple verification turned into a full archive-tape audit that forced the lab to recheck every Fortran run it had ever published. The episode is now a quiet cautionary tale in computational science, a reminder that code, like data, can decay.
The Tape That Wouldn't Recompute
The lab in question was a mid-sized computational physics group, the kind that spent the 1970s producing numerical results for peer-reviewed journals. Its archive consisted of a shelf of magnetic tapes, some labeled, most not. The 1975 run had been stored on a reel that looked identical to a dozen others, except for a handwritten note that had faded almost to illegibility.
The junior researcher, a postdoc hired for a six-month contract, spent a week trying to reproduce the original output. The Fortran source was there, or at least a version of it. But the input decks were incomplete, and the compiler had changed twice since 1975. The first run produced numbers that were close but not identical. The second run diverged further. By the third attempt, the program crashed with a floating-point error that no one could explain.
The postdoc went to the lab head, a senior physicist who had authored several of the papers in question. The lab head initially dismissed the discrepancy as a compiler artifact. "These things happen," he said, according to a departmental memo from the time. "The physics is right." But the postdoc persisted, and eventually the lab head agreed to a more systematic check.
What the postdoc found, after weeks of digging, was that the 1975 tape contained a subtle bug in a numerical integration routine. The bug had been introduced in a minor revision, never documented, and it affected every run that used that routine. Some outputs were off by a few percent, others by an order of magnitude. The published papers, it turned out, had been built on a mix of corrected and uncorrected runs.
Who Pushed the Recheck Through
The lab head resisted the full audit at first. He argued that the discrepancies were small, that the papers had passed peer review, and that a public retraction would damage the lab's reputation. He had a point: the lab was under pressure to produce new results, not to revisit old ones. Publication deadlines loomed, and a re-audit would consume months of computing time.
The funding agency, however, had grown uneasy. A grant renewal was pending, and the agency's program officer had heard rumors of the discrepancy. In a letter that survives in the lab's files, the officer asked for a written explanation of the re-run failure, hinting that the renewal depended on a satisfactory answer. That pressure, more than anything else, forced the lab head to agree to a full audit.
The postdoc, who had been the one to stumble on the bug, was given the unglamorous task of cataloguing every Fortran deck in the archive. It was a thankless job, but it had an unexpected payoff: the postdoc discovered that several other runs, from 1976 and 1977, also failed to reproduce. Some errors were benign, the result of changed compiler optimization. Others were fatal, producing results that contradicted the published tables.
The lab head eventually came around, but not without friction. He insisted that the audit be kept quiet until the errata were ready. The postdoc, who had pushed for transparency, felt the delay was a mistake. In the end, the errata were published, but the episode left a bitter taste. The lab head retired a few years later, and the postdoc moved to a different field.
The Cost of Not Archiving Code
The 1975 audit was not an isolated failure. It was a symptom of a broader problem: the near-total absence of code archiving norms in 1970s computational science. Tapes were unlabeled, undocumented, and stored in conditions that invited degradation. Compilers changed, hardware changed, and nobody kept a record of the exact environment in which a run had been executed.
The cost was measured in wasted effort. Re-running a single Fortran program took weeks, not because the computation was slow, but because the setup was undocumented. The postdoc spent days figuring out which tape was which, which compiler version was current, and which input deck matched the published table. The lab's computing time, which was expensive and scarce, was consumed by re-verification instead of new science.
There was also a financial cost. The funding agency had paid for results that, in some cases, could not be reproduced. The audit revealed that several published papers rested on outputs that were, at best, approximate and, at worst, wrong. The agency had to decide whether to demand refunds, which it did not, or to write off the loss, which it did. The episode became a line item in the agency's annual report, a cautionary tale for other labs.
The trust in old papers eroded, not just within the lab but across the field. Other groups began to quietly check their own archives, and a few found similar problems. The 1975 case became a reference point, a story that senior researchers told to new students: "This is what happens when you don't archive your code."
How the Audit Unfolded
The audit itself was a painstaking process. The postdoc, later joined by a second researcher, catalogued every Fortran deck in the archive, assigning each a unique identifier and a metadata card that recorded its provenance. The cards were a step forward, but they were hand-written and inconsistent, and the team often had to rely on memory to match a deck to a published table.
They then re-ran each program, using the original compiler where possible, and compared the output to the published tables. The comparison was done by hand, column by column, because the lab did not have a diff tool. It took months. The team found discrepancies in roughly a third of the runs. Some were trivial, like a rounding difference in the fifth decimal place. Others were severe, like a sign error that inverted a result.
The team published a set of errata, listing each affected paper and the corrected results. The errata were dry and technical, but they had a lasting effect. They showed that even a well-run lab could produce unreproducible results, and that the only way to catch them was to re-run the code.
The audit also produced a set of practice guidelines, which the lab adopted. Every tape was labeled with a date, a description, and the name of the person who created it. Every run was logged, with the compiler version and the input parameters. These guidelines were ahead of their time, but they were not enough. The lab still lacked a formal version-control system, and the tapes continued to degrade.
Incentives That Discourage Archiving
The 1975 audit exposed a deeper problem: the incentive structure of academic science actively discouraged code archiving. There was no career reward for writing clean, documented code. A researcher who spent a year cleaning up a Fortran deck had nothing to show for it except a tape that no one would look at. The rewards went to new results, not to re-verification.
Journals rarely required code deposit in the 1970s, and when they did, the requirement was often ignored. A paper could be published with a description of the method and a promise that the code was available on request. In practice, the code was often lost, or the request went unanswered. The audit found that several of the lab's papers had code that was never deposited anywhere.
Funding agencies did not ask for code, either. The grant application required a research plan and a budget, but not a data-management plan or a code-archiving plan. The agency's interest was in the results, not the means. This is a pattern that persisted for decades, and it is still visible in some fields today.
The pressure to publish new results was intense, and it pushed researchers to move on to the next problem rather than document the current one. Archiving was seen as unpaid labor, a task that could be deferred indefinitely. The postdoc who led the audit was not rewarded for it. He was, in fact, criticized for spending too much time on old tapes instead of generating new data.
Lessons for Today's Computational Labs
Today, the tools for code archiving are vastly better. Version control is standard, and containerization preserves the entire computing environment, including the compiler and the dependencies. A researcher can re-run a 1975 Fortran program in a Docker container, or in a virtual machine, and get exactly the same output, provided the container is archived.
But the incentives remain misaligned. A researcher who publishes a paper with a clean, reproducible code repository is often doing it out of personal commitment, not because the system rewards it. Journal policies vary, and many journals still do not require code deposit. Funding agencies have begun to require data-management plans, but code is often treated as an afterthought.
Some agencies are slowly changing. As of the late 2020s, several major funders require a software-management plan for computational projects, and a few have set aside money for code maintenance. But the progress is uneven, and the default assumption in many labs is still that code is a private artifact, not a public good.
Junior researchers are often the ones pushing for change. They are more likely to have grown up with version control, and they are more likely to see the value of reproducibility. But they face the same pressures as the 1970s postdoc: the need to publish, the lack of reward for archiving, and the temptation to move on to the next result. The 1975 audit is a reminder that these pressures are not new.
The Quiet Shift in Research Culture
In the decades since the 1975 audit, the culture of computational science has shifted, but slowly. Replication is now a buzzword, and many journals have adopted policies that encourage or require code deposit. The 2018 preprint episode showed that replication failures can have real consequences for funding. And the microfluidics gatekeeping study demonstrated how peer reviewers can use reproducibility as a criterion.
But audits are still rare and costly. The 1975 case involved months of manual work, and even today, a full re-audit of a lab's computational output would be a major undertaking. The tools are better, but the time and expertise required are still substantial. Most labs do not have the luxury of a dedicated postdoc to re-run every Fortran deck.
The 1975 case became a cautionary tale, but it also became a model. The lab's guidelines, crude as they were, influenced other groups. The funding agency's response, which included a requirement for future code deposits, was a small step in the right direction. And the postdoc, who left the field, never published a paper about the audit. But the story spread by word of mouth, and it appears in textbooks on scientific computing as an example of the dangers of unarchived code.
Changing norms takes a generation. The researchers who lived through the 1975 audit are mostly retired now, and the postdocs who followed them have become the senior scientists who set the rules. The question is whether the next generation will do better. Every lab should ask: could we re-run it? The answer, for many, is still no.
The Human Factor: Who Bears the Burden of Reproducibility?
The 1975 audit also highlights a human dimension that is often overlooked in discussions of reproducibility. The postdoc who discovered the bug and pushed for the audit paid a professional price. He was not rewarded for his diligence; instead, he was seen as a troublemaker who had wasted valuable computing time. In the years that followed, he struggled to find a permanent position, and he eventually left academia. His story is a cautionary tale about the personal costs of whistleblowing in science.
This pattern is not unique to the 1970s. In recent years, several high-profile replication efforts have been led by early-career researchers who faced pushback from senior scientists. For example, a 2016 attempt to replicate a well-known social psychology finding was met with hostility from the original authors, and the lead replicator received hate mail and threats to his career. The incentives for junior researchers to engage in replication work are still weak, and the risks are real.
One possible solution is to create formal recognition for replication and verification work. Some journals now publish "registered reports," where the methods are peer-reviewed before the results are known, and some funders have established grants specifically for replication studies. However, these initiatives are still the exception rather than the rule, and they do not fully address the cultural stigma attached to questioning established results.
Another approach is to make reproducibility a criterion for promotion and tenure. A few universities have begun to include data and code sharing in their evaluation criteria, but the practice is far from widespread. Until institutions reward the often thankless work of verifying old results, the burden will continue to fall on the shoulders of junior researchers who have the least power to effect change.
Technological Evolution: From Tapes to Containers
The technology for preserving computational work has evolved dramatically since the 1970s. Magnetic tapes, with their susceptibility to decay and mislabeling, have been replaced by digital repositories with version control and checksums. Cloud storage offers redundancy, and containerization platforms like Docker and Singularity allow researchers to package an entire computing environment, including the operating system, libraries, and code, into a single portable artifact.
However, these technological advances bring their own challenges. Digital formats become obsolete, and files can be corrupted silently. A study from the early 2020s found that a significant proportion of datasets archived in institutional repositories were no longer accessible within a decade, due to format changes or storage failures. The problem has shifted from physical decay to digital decay, but the underlying issue remains: without active curation, artifacts are lost.
Moreover, the ease of containerization can create a false sense of security. A container that runs today may not run in ten years if the underlying operating system or hardware architecture changes. Emulation and virtualization can help, but they require ongoing maintenance. The 1975 audit taught the lab that archiving is not a one-time act but a continuous process of curation and verification.
Some groups have embraced "literate programming" and executable papers, where the code and narrative are intertwined in a single document. Others have adopted continuous integration systems that automatically re-run tests whenever the code changes. These practices are promising, but they are not yet standard across all fields. The lesson from 1975 is that the tools are necessary but not sufficient; the culture must value the effort.
Counterarguments: Is Full Reproducibility Always Worth It?
Not everyone agrees that the 1975 audit was a net positive. Some researchers argue that the cost of full reproducibility is too high, especially for exploratory or computationally intensive work. Re-running every analysis with every possible compiler and hardware configuration is impractical. The postdoc in the 1975 case spent months on a single program, time that could have been used to produce new science.
There is also a risk of overcorrection. If journals and funders demand that all code be archived and all results be reproducible, researchers may become overly conservative, avoiding novel methods or complex analyses that are difficult to reproduce. The 1975 audit, while it caught real errors, also created a climate of fear in the lab, where researchers were reluctant to try new approaches.
Furthermore, reproducibility is not the same as correctness. A result can be perfectly reproducible and still be wrong, if the underlying model or data are flawed. The 1975 audit checked whether the code matched the published tables, but it did not verify that the physics was sound. Some critics argue that the emphasis on reproducibility has distracted from the more important question of whether the results are true.
These counterarguments have merit, but they do not negate the value of audits. The 1975 case showed that even a well-intentioned lab could produce erroneous results, and that the errors were only discovered through re-running the code. The cost of the audit was high, but the cost of letting the errors stand was higher: the lab's reputation was damaged, and the funding agency had to write off the loss. A balanced approach would prioritize reproducibility for results that are likely to be used or cited, while allowing more flexibility for exploratory work.
Conclusion: The Legacy of the 1975 Audit
The 1975 archive-tape audit was a turning point, not just for the lab but for the field of computational science. It demonstrated that code, like data, can decay, and that without proper archiving, even the most rigorous research can become unreproducible. The audit was painful, costly, and personally damaging for the postdoc who led it, but it left a lasting legacy.
The lab's guidelines, crude as they were, influenced other groups. The funding agency's response, which included a requirement for future code deposits, was a small step in the right direction. And the story spread by word of mouth, appearing in textbooks and training materials as a cautionary tale. Today, the tools are better, but the incentives are still misaligned. The question remains: will the next generation do better? Every lab should ask: could we re-run it? The answer, for many, is still no.