On the evening of 29 August 2026, the live page for Iceland's referendum on resuming EU accession talks displayed a coloured pill reading "Result: Rejected". It was accurate in the sense that this is how the referendum eventually ended. It was indefensible in the sense that, at the moment it appeared, the page had seen 9,707 votes from a single constituency and had no business saying anything of the kind.

It was visible for about sixteen minutes. Over the four hours that followed, the count ran the other way — Yes ahead — before turning back and finishing with No on 52.84% against 47.16%, on a turnout of 82.52%. Had a reader taken a screenshot at almost any point in those four hours, our own page would have contradicted the verdict it had already published.

I want to write this one up properly, because the interesting part is not the bug. It is that the mistake was structural, and the same structure exists on every live results system.

What actually happened

Iceland counts by constituency, and constituencies report in the order they finish. The first batch came from Suðurkjördæmi — a rural, southern constituency, and one of the most eurosceptic parts of the country. Our ingest code took that snapshot, computed which side was ahead, and wrote a verdict field into the summary. The page template renders a verdict pill whenever that field is present. Everything worked exactly as written.

The failure was in treating a partial count as though it differed from a complete one only in precision. It does not. A partial count is a biased sample, and the bias is not random: votes arrive grouped by geography, and geography is the single strongest predictor of how people vote. The first constituency to report is not a small version of the country. It is one specific place, with one specific politics, reporting first.

The rule that replaced it: vote shares may be published at any stage — they are honest descriptions of what has been counted. A verdict may not. Neither may turnout. Both are emitted only when the source's own data says the count is final.

Why turnout is the same trap

The turnout half of that rule surprises people, so it is worth spelling out. Mid-count, "ballots counted divided by registered voters" does not measure participation. It measures how much of the count has been done. With a third of stations reporting in a country where 80% of the electorate voted, that fraction reads about 27% — and 27% is not a fact about Icelandic civic engagement, it is a fact about the clock.

Vote shares behave differently, and this is the asymmetry worth internalising. The share of counted votes going to each side is a true statement about the ballots opened so far. It may not predict the final figure, but it does not misdescribe anything. A verdict and a turnout figure both make claims about the whole electorate from a fragment of it. That is the distinction we now draw in code.

The second mistake: over-correcting

Later the same night the Suðvestur constituency reported its first figures: 9,900 Yes, 9,900 No, 19,800 counted, zero blank, zero invalid. An exact tie, in round hundreds, with no spoiled ballots anywhere — while every other constituency was running 0.7% to 0.9% blank and invalid.

I concluded the feed was serving a placeholder and withheld the snapshot for about twenty-five minutes.

They were real. Icelandic media reported the identical numbers, zeros included, as that constituency's announced fyrstu tölur — first figures. The zeros were a procedural artefact: at that stage the returning officers announce Yes and No only, and reconcile blank and invalid ballots afterwards.

So the caution cost readers twenty-five minutes of real data. The lesson generalises past this one night: "these numbers look too round" is not a test. It cannot distinguish a fabricated stub from an official announcement, because officials announce round numbers all the time. What can distinguish them is an internal-consistency check — does Yes plus No plus blank plus invalid equal the reported total? A stub fails that. A genuine announcement passes it, zeros and all.

What a live page should promise

Three commitments came out of that night, and they now hold across every live election on this site:

  • Show progress, not just numbers. Every snapshot is captioned with how much has been counted — how many constituencies, districts or stations are in. A percentage without that context invites exactly the reading that got us into trouble.
  • Never derive a conclusion the source has not reached. If the electoral authority has not declared the count final, we do not print anything that only a final count could support.
  • Fail closed. When the ingest cannot parse or cannot validate a snapshot, the page keeps its previous state and says it is waiting. A stale honest number beats a fresh wrong one.

There is a broader point here about live coverage generally. The pressure on election night is to say something definite as early as possible, and the mechanism that produces early definite statements is exactly the mechanism that produces early wrong ones. Broadcasters manage this with exit polls and explicit probabilistic language. A results site has a simpler option available: describe what has been counted, say how much that is, and let the reader draw the conclusion when the count supports it.

The referendum, for the record, ended as the first constituency had suggested. That is the least interesting fact in this article. Being right by luck is not a method.