An actual audit using Hart's BallotNow: the Longmont council race, Jan 2008

This is an early version of this report. Updated: Fri Feb 8 12:48:48 MST 2008

Longmont council race audit, Jan 2008

On January 29, 2008, the the Boulder County Elections Division ran the Longmont Special Municipal Election for the city of Longmont, Colorado, to choose a new City Council member:

An actual audit using Hart's BallotNow

It was an all-mail-in election, with a single contest and four candidates. The counting process used central scanners (the Hart InterCivic BallotNow equipment). Because these scanners had been recently decertified in Colorado, the County Clerk, Hillary Hall, recommended a new way of auditing the results: checking the hand-count results against the original machine count of those ballots, rather than against machine recounts of the selected batches. Thus this would be a real audit, not the partial recounts disguised as audits, as have been done previously in Colorado.

The clerk also recommended a 10% audit of the results via a hand count. The city council, noting the small size of the election, asked for a larger audit: 20%.

The reason that real audits have not been done (though they are required by state law) is that most of the machines don't produce enough information to do an audit. In particular, the Hart BallotNow/Tally system can produce only precinct results, not results with subtotals by contiguous batches of ballots that can later be identified and hand-counted to compare with the machine count. So when central-count scanners are used to tabulate ballots that have not been sorted by precinct, it is impractical to find all the ballots for a given precinct so that the machine-reported precinct results can be audited.

For this election the clerk recommended doing extra steps during tabulation so that an independent report of vote counts for each batch could be generated. Note that the Hart system separates the BallotNow scanner from the Tally computer. BallotNow scans the ballots into image files, interprets them, and uses human intervention to interpret ballots that seem overvoted. Tally integrates input from BallotNow and from other optional components like DREs and generates tallies and reports. The only documented way to get a tally for an individual MBB is to generate the running totals before and after tallying the MBB and subtract the before-and-after results for each contest.

The process used by the clerk's team involved separating the 13961 ballots into 146 batches of about 100 votes each. Each batch was run separately through BallotNow. The team used 146 separate memory cards (called "Mobile Ballot Boxes" or MBBs) to store the scanning results (not yet tabulated into vote count subtotals) of each batch on a separate MBB. Each MBB was then read into the Tally system. The Tally system was then told to generate a full running tabulation and report in comma-separated-values (CSV) format after each MBB. The report gives the TOTAL for each contest for all MBBs (that is, for all counted batches) read up to that point. Each of the 146 election reports was saved, and then a spreadsheet was used to generate individual subtotals by batch, by subtracting the results of the previous total from the desired total.

A spreadsheet is available with these sheets:

The overall result was 7595 (54%) for the winner (Gabe Santos) and 4338 (31%) for the first runner up (Richard Juday), a winning margin of 23%. The total number of votes was 13961.

The margins in the individual batches ranged from 47 votes to -3 votes (that is, 3 more votes for runner-up Juday than Santos). The average winning margin for Santos was 23 votes (out of 100) per batch.

These data are useful for analyses of the statistics of the variation in the batch counts. It would seem likely that in many cases the mail-in processing would cause some randomization of the ballots so that batch counts could be expected to be more uniform than precinct counts. I don't know if the batches are labeled by whether the ballots were hand-delivered or mailed in, and it is possible that voters who chose mailing vs hand-delivery would have different candidate preferences. I wonder if there are any other data sets out there like this.

The handwritten audit tabulation records the hand tallies for the 28 batches that were audited. There were two discrepancies of a single vote each. One (probably batch D-065) was determined to be a miscount by the hand-counters, and the other (batch C-063) was a difference in interpretation of a ballot. The BallotNow system shows ballots that it thinks were overvoted to a "resolution team" during normal election-day counting. The team inspects the ballot (actually the scanned image, projected on a screen) to see if the voter's intent was clearly and legally indicated. The original resolution team said this particular vote was an overvote, by law, but the hand-counters said it was a vote for one of the candidates. The intent seemed clear, but the clerk says the law requires that this particular ballot be counted as an overvote. I haven't seen the ballot or studied the law, which she says should probably be clarified or changed....



Thanks to Boulder Clerk Hillary Hall and her team for proposing and implementing this historic audit, and the Longmont City Council for its support. Thanks to Mary Eberle for her public testimony, private pursuasion, and editing talents.

See also

This document is on the web at

Neal McBurnett