Jump to main content
Your email has not been verified. Verify email now ›
SimPandemic simulation model by Science Buddies.

SimPandemic — What's New

Updated August 2026

We went through the simulation's code carefully and found several mistakes in how it modeled the spread of disease. This update fixes them. It also adds a measurement that was missing.

The corrections are real, so the graphs change. If you have run SimPandemic before, the same settings will now produce a milder, slower outbreak than you are used to seeing. That is the point: the old version spread disease faster than the numbers you chose asked for.

Your saved simulations have not changed

A save code always gives back the run it recorded. Anything you saved before this update still opens with exactly the numbers it had on the day you saved it, produced by the old model. We do not go back and rewrite saved results — a code written down in a lab report has to keep meaning what it meant when it was written.

To see what the corrected model makes of those settings, open the simulation and run it again. That creates a new simulation with its own code and leaves the original untouched. Keeping both is worth doing: the gap between them is the size of the error, measured on your own scenario.

What we fixed

Diseases now spread at the rate you set

The most important fix. R0 is the number of people one sick person infects, and the simulation was overshooting it — delivering roughly 15% to 45% more spread than the value you entered, depending on the scenario. Set R0 to 3 and you were really getting closer to 4.

The daily number of new infections is now drawn from a Poisson distribution, which is the standard way to model events that happen independently at a known average rate. Most infected people infect nobody on a given day, some infect one person, a few infect two — and the average works out to exactly the rate you asked for.

Hospital numbers now appear when quarantine is switched on

Whether someone went to hospital was decided on the day their symptoms appeared. But quarantine also moved people on that same day, and once moved they were never considered for hospital admission. With quarantine at full strength, the hospitalization graph sat at zero.

Since "flatten the curve" is about hospital capacity, this was the worst place for the simulation to be silent. Hospitalization is now decided first, so quarantine no longer hides it.

Testing now makes a difference

People with symptoms are obvious. People without symptoms are only found by testing — which is why testing and quarantine only work as a pair. But the simulation was treating everybody as though they had already been tested, from day one, even when no testing program was set up. So quarantine caught asymptomatic people it should have missed, and turning testing on appeared to change almost nothing.

Now quarantine only reaches people without symptoms once testing has actually got to them. Try running a scenario with quarantine alone, then with quarantine and testing together.

Quarantine no longer works against itself

The simulation tracks what share of the population can still catch the disease, because that share is what makes an outbreak slow down and turn over. Quarantined people were being left out of that calculation, which nudged the disease into spreading slightly faster the more effective quarantine became. They are counted now.

Improved therapy no longer stacks up

Running the same scenario twice applied the reduction in deaths twice, so the second run looked better than it should have. Each run now starts fresh.

Travel moves the right number of people

Travel out of the population was moving one more person per day than the rate you set. A small error, now corrected.

What we added

The reproduction rate is now measured

The summary always had a space for the reproduction rate and it always read zero. It is now calculated, and it may be the most useful number on the page.

It answers: among the people who stopped being contagious today, how many did each of them infect on average? Above 1, every infection more than replaces itself and the outbreak grows. Below 1, it is dying out. Watch it fall as more of the population becomes immune — the day it crosses 1 is the day the epidemic peaks.

One thing to notice: it crosses 1 a few days after the peak in the graph, not exactly on it. That is because it looks backwards, at people who caught the disease a couple of weeks earlier. Real outbreak data has the same lag, which is why health authorities can only confirm a peak after it has passed.

Clearer messages when settings do not make sense

Settings that could not work — an end day before a start day, a percentage where a proportion belongs — used to produce a strange graph with no explanation. They now say what is wrong and which setting to look at.

Every simulation can be replayed exactly

A simulation involves a lot of chance: who meets whom, who develops symptoms, who recovers. Each run now records the starting point for all of that alongside its results.

Opening a saved code always gave you your results back, and still does. What is new is that the run itself can be reconstructed from scratch and produce the same outbreak again, rather than a different one from the same settings. That is what makes it possible to change a single setting and be certain the difference you see came from that setting and not from luck.

What you might notice

A note for the herd immunity activities

Two of the sandboxes ask you to find the herd immunity threshold — the share of a population that has to be immune before an outbreak cannot get going. Because the disease was spreading faster than it should have, that threshold appeared higher than it really is.

For the COVID-19 sandbox with R0 at 3, the answer you measure should now come out about 2 percentage points lower, and much closer to what the textbook formula predicts: 1 − 1/R0, or about 67%. For measles the shift is about half a point.

If you have a recorded answer from before, keep it. Measuring the threshold again and comparing the two is a better exercise than either measurement on its own.

Your earlier measurement has not been taken away from you — whatever you saved is still there under its own code, exactly as you left it. Measure the threshold again with the corrected model and compare the two. That comparison is a better exercise than either measurement on its own, and you can only do it because the first one was not overwritten.


Why we are telling you all this

A simulation that is quietly wrong is worse than one that is obviously broken, because nothing looks unusual. These mistakes had been in SimPandemic for a while, and they produced graphs that looked entirely believable. Finding them meant reading the code closely and checking the numbers it produced against what the settings asked for.

That is how science is supposed to work, so it seemed worth showing rather than quietly patching. If you spot something that does not look right, please tell us.

Top
Free science fair projects.