Skip to content

Abstention vs. a zero vs. "None of the Above" — three different things

Three ballot situations look similar on a STAR score sheet but mean genuinely different things. Confusing them is behind a lot of "why is the count off?" questions, so here they are side by side.

The three cases

1. A zero — 0 (an active low score). You scored the candidate the lowest possible amount. It's a real evaluation ("I do not support this candidate") and it counts as a cast, tallied score. A bullet vote (5 for one, 0 for everyone else) is made of zeros — the voter participated fully, they just rated most candidates 0.

2. An abstention — blank / unscored. You left the line blank. Two flavors:

  • Whole-ballot abstention — every line blank (or, in STAR, all lines equal, e.g. 0,0,0 or 5,5,5). The ballot expresses no preference, so it's set aside as an abstention: it counts as turnout but contributes nothing to any candidate's score or to the runoff. Set aside is not discarded — the ballot is still counted as turnout (and toward quorum); it's only kept out of the preference math. And that costs no one anything: an all-equal ballot rates every candidate the same, so folding it in would move every total by the identical amount and tip no scoring round and no runoff — the winner is unchanged either way. Setting it aside simply keeps the turnout count honest instead of padding everyone's score with a ballot that voiced no opinion.
  • Per-candidate abstention — you scored some candidates and left one blank. That one blank tallies as 0 for the math, but the ballot still counts — a single unscored candidate does not turn the whole ballot into an abstention.

3. None of the Above — c-nota (an active vote for "reject the field"). "None of the Above" is a real candidate on BetterVoting. Scoring it 5 is an active preference — a vote for the option "none of these should be seated." It competes like any candidate: it can reach the runoff and win (see the BV215 case, where it does).

The one-line contrast

Abstaining / all-zeros withdraws you from the decision. Scoring None-of-the-Above participates in it — you're casting a real vote, for the specific option "reject these candidates."

An all-blank ballot removes your weight from the room. A 0,0,0,…,5-for-NOTA ballot keeps your full weight and throws it behind a "none" outcome. Same-looking scores, opposite effect.

Side by side (a 3-candidate race)

Ballot Ada Bruno None of the Above What it means Effect on the count
Bullet / zeros 5 0 0 Full support for Ada, rejects the rest Cast vote; all scores tallied
Whole-ballot abstention No preference at all Set aside as an abstention (turnout only)
Per-candidate abstention 5 1 Scored two, left NOTA blank Cast vote; blank tallies as 0, ballot still counts
None of the Above 0 0 5 Actively rejects both real candidates Cast vote; NOTA competes and can win

( = blank. In this library's YAML the whole-ballot vs per-candidate blanks use the LH markers below.)

How each system records it

BetterVoting stores a score as 05, or null when a candidate is left unscored — and "None of the Above" is just a candidate (c-nota) you score. So BV distinguishes exactly three states per candidate line: a number, null (didn't score), or a NOTA score. null is preserved and is not the same as 0 (BetterVoting reports a whole-ballot abstention only when the whole ballot is blank/equal — a single null doesn't count as one).

The Larry Hastings engine goes further: it has a small marker vocabulary for why a line is zero — all tabulate as 0, but each is recorded and reported distinctly:

Marker Meaning
- blank
~ race abstention
& candidate abstention
? spoiled ballot
% spoiled and re-issued

See STAR ballot voting styles and Ballot & Terminology Basics. That the file can carry these distinct markers at all — instead of collapsing every non-vote into a bare 0 — is a direct payoff of the one legible-and-runnable YAML design: the format stores the intent behind a zero, which a flat CSV of scores can't.

The gap: BetterVoting can't capture intent behind a non-score

This is a real difference in expressiveness. In the LH engine a 0 (an active low score) is distinct from - (blank), ~ / & (a deliberate abstention), and ? / % (spoiled) — even though they all tabulate as 0 — so reports and audits can tell a rejection apart from a non-participation apart from a spoiled ballot.

BetterVoting has only two of those states: a score, or null. It has no explicit "abstained" or "spoiled" mark. A voter who means "I deliberately abstain on this candidate" and one who simply skipped the line produce the identical null; a deliberate 0-as-protest and a 0-as-indifference are identical too. The voter's intent behind a non-score isn't captured, which limits abstention/turnout reporting and auditing.

That's a candidate missing-feature for BetterVoting relative to LH: an explicit abstain (and spoiled) affordance on the ballot, stored distinctly from a plain 0 or a blank — so the count can report deliberate abstentions and spoiled ballots honestly instead of folding them into zeros and nulls.

See it in the cases

The BetterVoting issues on this exact topic (abstain / blank / zero mislabels, export ambiguity, the #884 "all-equal = abstain" policy, and the #1421 NOTA case) are catalogued in BV abstain / blank / zero — issue index, cross-referenced to the test cases.

Ballot voting styles · "Preference" — the word that causes half the confusion · Quorum · GLOSSARY · Curriculum