Anti-Harassment Tools/SecurePoll Improvements/Test Results/20 6 5000 536228607

Comments
SecurePoll elects only candidate 10.

OpenSTV elects candidates 10, 16, 17, 18, 19, 20.

We eliminate candidates 1-9 in round 3, then 11-20 in round 4. We don't seem to recalculate the droop quota after we have eliminated candidates 1-9. If we did, we would reallocate votes from candidate 10 to candidates 11-20, effecting who we would choose to eliminate.

It should be noted that I think the formula OpenSTV uses to calculate the quota is slightly different from our own.

See 20_6_5001_819859726 for a slightly modified version of this election, where SecurePoll does agree with OpenSTV.

Election setup

 * Candidates: 20
 * Seats: 6
 * Votes: 5000

Actual
Output from SecurePoll: array(3) { ["elected"]=> array(1) { [0]=>   int(10) } ["eliminated"]=> array(19) { [0]=>   int(2) [1]=>   int(9) [2]=>   int(8) [3]=>   int(7) [4]=>   int(6) [5]=>   int(5) [6]=>   int(4) [7]=>   int(3) [8]=>   int(1) [9]=>   int(20) [10]=>   int(12) [11]=>   int(19) [12]=>   int(18) [13]=>   int(17) [14]=>   int(16) [15]=>   int(15) [16]=>   int(14) [17]=>   int(13) [18]=>   int(11) } ["rounds"]=> array(4) { [0]=>   array(8) { ["round"]=> int(1) ["surplus"]=> int(0) ["rankings"]=> array(20) { [1]=>       array(3) { ["votes"]=> int(0) ["earned"]=> int(225) ["total"]=> int(225) }       [2]=>        array(3) { ["votes"]=> int(0) ["earned"]=> int(225) ["total"]=> int(225) }       [3]=>        array(3) { ["votes"]=> int(0) ["earned"]=> int(225) ["total"]=> int(225) }       [4]=>        array(3) { ["votes"]=> int(0) ["earned"]=> int(225) ["total"]=> int(225) }       [5]=>        array(3) { ["votes"]=> int(0) ["earned"]=> int(225) ["total"]=> int(225) }       [6]=>        array(3) { ["votes"]=> int(0) ["earned"]=> int(225) ["total"]=> int(225) }       [7]=>        array(3) { ["votes"]=> int(0) ["earned"]=> int(225) ["total"]=> int(225) }       [8]=>        array(3) { ["votes"]=> int(0) ["earned"]=> int(225) ["total"]=> int(225) }       [9]=>        array(3) { ["votes"]=> int(0) ["earned"]=> int(225) ["total"]=> int(225) }       [10]=>        array(3) { ["votes"]=> int(0) ["earned"]=> int(715) ["total"]=> int(715) }       [11]=>        array(3) { ["votes"]=> int(0) ["earned"]=> int(226) ["total"]=> int(226) }       [12]=>        array(3) { ["votes"]=> int(0) ["earned"]=> int(226) ["total"]=> int(226) }       [13]=>        array(3) { ["votes"]=> int(0) ["earned"]=> int(226) ["total"]=> int(226) }       [14]=>        array(3) { ["votes"]=> int(0) ["earned"]=> int(226) ["total"]=> int(226) }       [15]=>        array(3) { ["votes"]=> int(0) ["earned"]=> int(226) ["total"]=> int(226) }       [16]=>        array(3) { ["votes"]=> int(0) ["earned"]=> int(226) ["total"]=> int(226) }       [17]=>        array(3) { ["votes"]=> int(0) ["earned"]=> int(226) ["total"]=> int(226) }       [18]=>        array(3) { ["votes"]=> int(0) ["earned"]=> int(226) ["total"]=> int(226) }       [19]=>        array(3) { ["votes"]=> int(0) ["earned"]=> int(226) ["total"]=> int(226) }       [20]=>        array(3) { ["votes"]=> int(0) ["earned"]=> int(226) ["total"]=> int(226) }     }      ["totalVotes"]=> int(5000) ["keepFactors"]=> array(20) { [1]=>       int(1) [2]=>       int(1) [3]=>       int(1) [4]=>       int(1) [5]=>       int(1) [6]=>       int(1) [7]=>       int(1) [8]=>       int(1) [9]=>       int(1) [10]=>       int(1) [11]=>       int(1) [12]=>       int(1) [13]=>       int(1) [14]=>       int(1) [15]=>       int(1) [16]=>       int(1) [17]=>       int(1) [18]=>       int(1) [19]=>       int(1) [20]=>       int(1) }     ["quota"]=> int(715) ["elected"]=> array(0) { }     ["eliminated"]=> array(0) { }   }    [1]=>    array(8) { ["round"]=> int(2) ["elected"]=> array(1) { [0]=>       int(10) }     ["eliminated"]=> array(0) { }     ["surplus"]=> int(0) ["keepFactors"]=> array(20) { [1]=>       int(1) [2]=>       int(1) [3]=>       int(1) [4]=>       int(1) [5]=>       int(1) [6]=>       int(1) [7]=>       int(1) [8]=>       int(1) [9]=>       int(1) [10]=>       int(1) [11]=>       int(1) [12]=>       int(1) [13]=>       int(1) [14]=>       int(1) [15]=>       int(1) [16]=>       int(1) [17]=>       int(1) [18]=>       int(1) [19]=>       int(1) [20]=>       int(1) }     ["quota"]=> int(715) ["rankings"]=> array(20) { [1]=>       array(3) { ["votes"]=> int(225) ["earned"]=> int(0) ["total"]=> int(225) }       [2]=>        array(3) { ["votes"]=> int(225) ["earned"]=> int(0) ["total"]=> int(225) }       [3]=>        array(3) { ["votes"]=> int(225) ["earned"]=> int(0) ["total"]=> int(225) }       [4]=>        array(3) { ["votes"]=> int(225) ["earned"]=> int(0) ["total"]=> int(225) }       [5]=>        array(3) { ["votes"]=> int(225) ["earned"]=> int(0) ["total"]=> int(225) }       [6]=>        array(3) { ["votes"]=> int(225) ["earned"]=> int(0) ["total"]=> int(225) }       [7]=>        array(3) { ["votes"]=> int(225) ["earned"]=> int(0) ["total"]=> int(225) }       [8]=>        array(3) { ["votes"]=> int(225) ["earned"]=> int(0) ["total"]=> int(225) }       [9]=>        array(3) { ["votes"]=> int(225) ["earned"]=> int(0) ["total"]=> int(225) }       [10]=>        array(3) { ["votes"]=> int(715) ["earned"]=> int(0) ["total"]=> int(715) }       [11]=>        array(3) { ["votes"]=> int(226) ["earned"]=> int(0) ["total"]=> int(226) }       [12]=>        array(3) { ["votes"]=> int(226) ["earned"]=> int(0) ["total"]=> int(226) }       [13]=>        array(3) { ["votes"]=> int(226) ["earned"]=> int(0) ["total"]=> int(226) }       [14]=>        array(3) { ["votes"]=> int(226) ["earned"]=> int(0) ["total"]=> int(226) }       [15]=>        array(3) { ["votes"]=> int(226) ["earned"]=> int(0) ["total"]=> int(226) }       [16]=>        array(3) { ["votes"]=> int(226) ["earned"]=> int(0) ["total"]=> int(226) }       [17]=>        array(3) { ["votes"]=> int(226) ["earned"]=> int(0) ["total"]=> int(226) }       [18]=>        array(3) { ["votes"]=> int(226) ["earned"]=> int(0) ["total"]=> int(226) }       [19]=>        array(3) { ["votes"]=> int(226) ["earned"]=> int(0) ["total"]=> int(226) }       [20]=>        array(3) { ["votes"]=> int(226) ["earned"]=> int(0) ["total"]=> int(226) }     }      ["totalVotes"]=> int(5000) }   [2]=>    array(8) { ["round"]=> int(3) ["elected"]=> array(0) { }     ["eliminated"]=> array(9) { [0]=>       int(2) [1]=>       int(9) [2]=>       int(8) [3]=>       int(7) [4]=>       int(6) [5]=>       int(5) [6]=>       int(4) [7]=>       int(3) [8]=>       int(1) }     ["surplus"]=> int(0) ["keepFactors"]=> array(20) { [1]=>       int(1) [2]=>       int(1) [3]=>       int(1) [4]=>       int(1) [5]=>       int(1) [6]=>       int(1) [7]=>       int(1) [8]=>       int(1) [9]=>       int(1) [10]=>       int(1) [11]=>       int(1) [12]=>       int(1) [13]=>       int(1) [14]=>       int(1) [15]=>       int(1) [16]=>       int(1) [17]=>       int(1) [18]=>       int(1) [19]=>       int(1) [20]=>       int(1) }     ["quota"]=> int(715) ["rankings"]=> array(20) { [1]=>       array(3) { ["votes"]=> int(225) ["earned"]=> int(0) ["total"]=> int(225) }       [2]=>        array(3) { ["votes"]=> int(225) ["earned"]=> int(0) ["total"]=> int(225) }       [3]=>        array(3) { ["votes"]=> int(225) ["earned"]=> int(0) ["total"]=> int(225) }       [4]=>        array(3) { ["votes"]=> int(225) ["earned"]=> int(0) ["total"]=> int(225) }       [5]=>        array(3) { ["votes"]=> int(225) ["earned"]=> int(0) ["total"]=> int(225) }       [6]=>        array(3) { ["votes"]=> int(225) ["earned"]=> int(0) ["total"]=> int(225) }       [7]=>        array(3) { ["votes"]=> int(225) ["earned"]=> int(0) ["total"]=> int(225) }       [8]=>        array(3) { ["votes"]=> int(225) ["earned"]=> int(0) ["total"]=> int(225) }       [9]=>        array(3) { ["votes"]=> int(225) ["earned"]=> int(0) ["total"]=> int(225) }       [10]=>        array(3) { ["votes"]=> int(715) ["earned"]=> int(0) ["total"]=> int(715) }       [11]=>        array(3) { ["votes"]=> int(226) ["earned"]=> int(0) ["total"]=> int(226) }       [12]=>        array(3) { ["votes"]=> int(226) ["earned"]=> int(0) ["total"]=> int(226) }       [13]=>        array(3) { ["votes"]=> int(226) ["earned"]=> int(0) ["total"]=> int(226) }       [14]=>        array(3) { ["votes"]=> int(226) ["earned"]=> int(0) ["total"]=> int(226) }       [15]=>        array(3) { ["votes"]=> int(226) ["earned"]=> int(0) ["total"]=> int(226) }       [16]=>        array(3) { ["votes"]=> int(226) ["earned"]=> int(0) ["total"]=> int(226) }       [17]=>        array(3) { ["votes"]=> int(226) ["earned"]=> int(0) ["total"]=> int(226) }       [18]=>        array(3) { ["votes"]=> int(226) ["earned"]=> int(0) ["total"]=> int(226) }       [19]=>        array(3) { ["votes"]=> int(226) ["earned"]=> int(0) ["total"]=> int(226) }       [20]=>        array(3) { ["votes"]=> int(226) ["earned"]=> int(0) ["total"]=> int(226) }     }      ["totalVotes"]=> int(5000) }   [3]=>    array(8) { ["round"]=> int(4) ["elected"]=> array(0) { }     ["eliminated"]=> array(10) { [0]=>       int(20) [1]=>       int(12) [2]=>       int(19) [3]=>       int(18) [4]=>       int(17) [5]=>       int(16) [6]=>       int(15) [7]=>       int(14) [8]=>       int(13) [9]=>       int(11) }     ["surplus"]=> int(289) ["keepFactors"]=> array(20) { [1]=>       int(0) [2]=>       int(0) [3]=>       int(0) [4]=>       int(0) [5]=>       int(0) [6]=>       int(0) [7]=>       int(0) [8]=>       int(0) [9]=>       int(0) [10]=>       int(1) [11]=>       int(1) [12]=>       int(1) [13]=>       int(1) [14]=>       int(1) [15]=>       int(1) [16]=>       int(1) [17]=>       int(1) [18]=>       int(1) [19]=>       int(1) [20]=>       int(1) }     ["quota"]=> int(426) ["rankings"]=> array(20) { [1]=>       array(3) { ["votes"]=> int(225) ["earned"]=> int(-225) ["total"]=> int(0) }       [2]=>        array(3) { ["votes"]=> int(225) ["earned"]=> int(-225) ["total"]=> int(0) }       [3]=>        array(3) { ["votes"]=> int(225) ["earned"]=> int(-225) ["total"]=> int(0) }       [4]=>        array(3) { ["votes"]=> int(225) ["earned"]=> int(-225) ["total"]=> int(0) }       [5]=>        array(3) { ["votes"]=> int(225) ["earned"]=> int(-225) ["total"]=> int(0) }       [6]=>        array(3) { ["votes"]=> int(225) ["earned"]=> int(-225) ["total"]=> int(0) }       [7]=>        array(3) { ["votes"]=> int(225) ["earned"]=> int(-225) ["total"]=> int(0) }       [8]=>        array(3) { ["votes"]=> int(225) ["earned"]=> int(-225) ["total"]=> int(0) }       [9]=>        array(3) { ["votes"]=> int(225) ["earned"]=> int(-225) ["total"]=> int(0) }       [10]=>        array(3) { ["votes"]=> int(715) ["earned"]=> int(0) ["total"]=> int(715) }       [11]=>        array(3) { ["votes"]=> int(226) ["earned"]=> int(0) ["total"]=> int(226) }       [12]=>        array(3) { ["votes"]=> int(226) ["earned"]=> int(0) ["total"]=> int(226) }       [13]=>        array(3) { ["votes"]=> int(226) ["earned"]=> int(0) ["total"]=> int(226) }       [14]=>        array(3) { ["votes"]=> int(226) ["earned"]=> int(0) ["total"]=> int(226) }       [15]=>        array(3) { ["votes"]=> int(226) ["earned"]=> int(0) ["total"]=> int(226) }       [16]=>        array(3) { ["votes"]=> int(226) ["earned"]=> int(0) ["total"]=> int(226) }       [17]=>        array(3) { ["votes"]=> int(226) ["earned"]=> int(0) ["total"]=> int(226) }       [18]=>        array(3) { ["votes"]=> int(226) ["earned"]=> int(0) ["total"]=> int(226) }       [19]=>        array(3) { ["votes"]=> int(226) ["earned"]=> int(0) ["total"]=> int(226) }       [20]=>        array(3) { ["votes"]=> int(226) ["earned"]=> int(0) ["total"]=> int(226) }     }      ["totalVotes"]=> int(2975) } } }

Expected
Output from OpenSTV (or other): Loading ballots from file 20_6_5000_536228607.blt. Ballot file contains 20 candidates and 5000 ballots. No candidates have withdrawn. Ballot file contains 5000 non-empty ballots.

Counting votes for ElectionTitle using Meek STV. 20 candidates running for 6 seats.

R|1         |2          |3          |4          |5          |6 |---+---+---+---+---+--- |7          |8          |9          |10         |11         |12           |---+---+---+---+---+---  |13         |14         |15         |16         |17         |18           |---+---+---+---+---+---  |19         |20         |Exhausted  |Surplus    |Threshold

=
============================================================= 1| 225.000000| 225.000000| 225.000000| 225.000000| 225.000000| 225.000000 | 225.000000| 225.000000| 225.000000| 715.000000| 226.000000| 226.000000  | 226.000000| 226.000000| 226.000000| 226.000000| 226.000000| 226.000000  | 226.000000| 226.000000|   0.000000|   0.714285| 714.285715  |---  | Count of first choices. Candidate 10 has reached the threshold and is | elected.

=
============================================================= 2| 225.000999| 225.001998| 225.002997| 225.003996| 225.004995| 225.005994 | 225.006993| 225.007992| 225.008991| 714.285715| 226.009990| 226.010989  | 226.011988| 226.012987| 226.013986| 226.014985| 226.015984| 226.016983  | 226.017982| 226.018981|   0.524475|   0.074925| 714.210790  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 10, 0.999001.

=
============================================================= 3| 225.001103| 225.002206| 225.003309| 225.004412| 225.005515| 225.006618 | 225.007721| 225.008824| 225.009927| 714.211355| 226.011030| 226.012133  | 226.013236| 226.014339| 226.015442| 226.016545| 226.017648| 226.018751  | 226.019854| 226.020957|   0.579075|   0.008365| 714.202990  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 10, 0.998897.

=
============================================================= 4| 225.001114| 225.002228| 225.003342| 225.004456| 225.005570| 225.006684 | 225.007798| 225.008912| 225.010026| 714.203490| 226.011140| 226.012254  | 226.013368| 226.014482| 226.015596| 226.016710| 226.017824| 226.018938  | 226.020052| 226.021166|   0.584850|   0.001325| 714.202165  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 10, 0.998886.

=
============================================================= 5| 225.001115| 225.002230| 225.003345| 225.004460| 225.005575| 225.006690 | 225.007805| 225.008920| 225.010035| 714.202775| 226.011150| 226.012265  | 226.013380| 226.014495| 226.015610| 226.016725| 226.017840| 226.018955  | 226.020070| 226.021185|   0.585375|   0.000685| 714.202090  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 10, 0.998885.

=
============================================================= 6|          | 225.002230| 225.003345| 225.004460| 225.005575| 225.006690  | 225.007805| 225.008920| 225.010035| 714.202775| 226.011150| 226.012265  | 226.013380| 226.014495| 226.015610| 226.016725| 226.017840| 226.018955  | 226.020070| 226.021185| 225.586490|  32.143702| 682.059073  |---  | Count after eliminating 1 and transferring votes. All losing | candidates are eliminated.

=
============================================================= 7|          | 225.092142| 225.138213| 225.184284| 225.230355| 225.276426  | 225.322497| 225.368568| 225.414639| 682.059235| 226.460710| 226.506781  | 226.552852| 226.598923| 226.644994| 226.691065| 226.737136| 226.783207  | 226.829278| 226.875349| 249.233346|   3.378284| 678.680951  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 10, 0.953929.

=
============================================================= 8|          | 225.101590| 225.152385| 225.203180| 225.253975| 225.304770  | 225.355565| 225.406360| 225.457155| 678.681575| 226.507950| 226.558745  | 226.609540| 226.660335| 226.711130| 226.761925| 226.812720| 226.863515  | 226.914310| 226.965105| 251.718170|   0.355599| 678.325976  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 10, 0.949205.

=
============================================================= 9|          | 225.102584| 225.153876| 225.205168| 225.256460| 225.307752  | 225.359044| 225.410336| 225.461628| 678.326220| 226.512920| 226.564212  | 226.615504| 226.666796| 226.718088| 226.769380| 226.820672| 226.871964  | 226.923256| 226.974548| 251.979592|   0.037590| 678.288630  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 10, 0.948708.

=
============================================================= 10|          |           | 225.153876| 225.205168| 225.256460| 225.307752  | 225.359044| 225.410336| 225.461628| 678.326220| 226.512920| 226.564212  | 226.615504| 226.666796| 226.718088| 226.769380| 226.820672| 226.871964  | 226.923256| 226.974548| 477.082176|  32.195102| 646.131118  |---  | Count after eliminating 2 and transferring votes. All losing | candidates are eliminated.

=
============================================================= 11|          |           | 225.288960| 225.385280| 225.481600| 225.577920  | 225.674240| 225.770560| 225.866880| 646.131200| 226.963200| 227.059520  | 227.155840| 227.252160| 227.348480| 227.444800| 227.541120| 227.637440  | 227.733760| 227.830080| 500.856960|   3.396479| 642.734721  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 10, 0.903680.

=
============================================================= 12|          |           | 225.303210| 225.404280| 225.505350| 225.606420  | 225.707490| 225.808560| 225.909630| 642.734950| 227.010700| 227.111770  | 227.212840| 227.313910| 227.414980| 227.516050| 227.617120| 227.718190  | 227.819260| 227.920330| 503.364960|   0.358515| 642.376435  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 10, 0.898930.

=
============================================================= 13|          |           | 225.304713| 225.406284| 225.507855| 225.609426  | 225.710997| 225.812568| 225.914139| 642.376735| 227.015710| 227.117281  | 227.218852| 227.320423| 227.421994| 227.523565| 227.625136| 227.726707  | 227.828278| 227.929849| 503.629488|   0.038090| 642.338645  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 10, 0.898429.

=
============================================================= 14|          |           |           | 225.406284| 225.507855| 225.609426  | 225.710997| 225.812568| 225.914139| 642.376735| 227.015710| 227.117281  | 227.218852| 227.320423| 227.421994| 227.523565| 227.625136| 227.726707  | 227.828278| 227.929849| 728.934201|  32.224477| 610.152258  |---  | Count after eliminating 3 and transferring votes. All losing | candidates are eliminated.

=
============================================================= 15|          |           |           | 225.586560| 225.733200| 225.879840  | 226.026480| 226.173120| 226.319760| 610.152400| 227.466400| 227.613040  | 227.759680| 227.906320| 228.052960| 228.199600| 228.346240| 228.492880  | 228.639520| 228.786160| 752.865840|   3.418948| 606.733452  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 10, 0.853360.

=
============================================================= 16|          |           |           | 225.605684| 225.757105| 225.908526  | 226.059947| 226.211368| 226.362789| 606.733985| 227.514210| 227.665631  | 227.817052| 227.968473| 228.119894| 228.271315| 228.422736| 228.574157  | 228.725578| 228.876999| 755.404551|   0.363206| 606.370779  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 10, 0.848579.

=
============================================================= 17|          |           |           | 225.607712| 225.759640| 225.911568  | 226.063496| 226.215424| 226.367352| 606.371480| 227.519280| 227.671208  | 227.823136| 227.975064| 228.126992| 228.278920| 228.430848| 228.582776  | 228.734704| 228.886632| 755.673768|   0.039161| 606.332319  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 10, 0.848072.

=
============================================================= 18|          |           |           |           | 225.759640| 225.911568  | 226.063496| 226.215424| 226.367352| 606.371480| 227.519280| 227.671208  | 227.823136| 227.975064| 228.126992| 228.278920| 228.430848| 228.582776  | 228.734704| 228.886632| 981.281480|  32.268834| 574.102646  |---  | Count after eliminating 4 and transferring votes. All losing | candidates are eliminated.

=
============================================================= 19|          |           |           |           | 225.985295| 226.182354  | 226.379413| 226.576472| 226.773531| 574.102815| 227.970590| 228.167649  | 228.364708| 228.561767| 228.758826| 228.955885| 229.152944| 229.350003  | 229.547062| 229.744121|1005.426565|   3.449467| 570.653348  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 10, 0.802941.

=
============================================================= 20|          |           |           |           | 226.009415| 226.211298  | 226.413181| 226.615064| 226.816947| 570.653655| 228.018830| 228.220713  | 228.422596| 228.624479| 228.826362| 229.028245| 229.230128| 229.432011  | 229.633894| 229.835777|1008.007405|   0.368998| 570.284657  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 10, 0.798117.

=
============================================================= 21|          |           |           |           | 226.011995| 226.214394  | 226.416793| 226.619192| 226.821591| 570.284715| 228.023990| 228.226389  | 228.428788| 228.631187| 228.833586| 229.035985| 229.238384| 229.440783  | 229.643182| 229.845581|1008.283465|   0.039495| 570.245220  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 10, 0.797601.

=
============================================================= 22|          |           |           |           |           | 226.214394  | 226.416793| 226.619192| 226.821591| 570.284715| 228.023990| 228.226389  | 228.428788| 228.631187| 228.833586| 229.035985| 229.238384| 229.440783  | 229.643182| 229.845581|1234.295460|  32.326923| 537.957792  |---  | Count after eliminating 5 and transferring votes. All losing | candidates are eliminated.

=
============================================================= 23|          |           |           |           |           | 226.485666  | 226.733277| 226.980888| 227.228499| 537.958135| 228.476110| 228.723721  | 228.971332| 229.218943| 229.466554| 229.714165| 229.961776| 230.209387  | 230.456998| 230.704609|1258.709940|   3.488126| 534.470009  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 10, 0.752389.

=
============================================================= 24|          |           |           |           |           | 226.514934  | 226.767423| 227.019912| 227.272401| 534.470365| 228.524890| 228.777379  | 229.029868| 229.282357| 229.534846| 229.787335| 230.039824| 230.292313  | 230.544802| 230.797291|1261.344060|   0.376659| 534.093706  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 10, 0.747511.

=
============================================================= 25|          |           |           |           |           | 226.518090  | 226.771105| 227.024120| 227.277135| 534.094275| 228.530150| 228.783165  | 229.036180| 229.289195| 229.542210| 229.795225| 230.048240| 230.301255  | 230.554270| 230.807285|1261.628100|   0.041146| 534.053129  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 10, 0.746985.

=
============================================================= 26|          |           |           |           |           |             | 226.771105| 227.024120| 227.277135| 534.094275| 228.530150| 228.783165  | 229.036180| 229.289195| 229.542210| 229.795225| 230.048240| 230.301255  | 230.554270| 230.807285|1488.146190|  32.400873| 501.693402  |---  | Count after eliminating 6 and transferring votes. All losing | candidates are eliminated.

=
============================================================= 27|          |           |           |           |           |             | 227.088310| 227.386640| 227.684970| 501.694050| 228.983300| 229.281630  | 229.579960| 229.878290| 230.176620| 230.474950| 230.773280| 231.071610  | 231.369940| 231.668270|1512.888180|   3.535218| 498.158832  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 10, 0.701670.

=
============================================================= 28|          |           |           |           |           |             | 227.122918| 227.426192| 227.729466| 498.159090| 229.032740| 229.336014  | 229.639288| 229.942562| 230.245836| 230.549110| 230.852384| 231.155658  | 231.458932| 231.762206|1515.587604|   0.385890| 497.773200  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 10, 0.696726.

=
============================================================= 29|          |           |           |           |           |             | 227.126691| 227.430504| 227.734317| 497.773705| 229.038130| 229.341943  | 229.645756| 229.949569| 230.253382| 230.557195| 230.861008| 231.164821  | 231.468634| 231.772447|1515.881898|   0.042547| 497.731158  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 10, 0.696187.

=
============================================================= 30|          |           |           |           |           |             |           | 227.430504| 227.734317| 497.773705| 229.038130| 229.341943  | 229.645756| 229.949569| 230.253382| 230.557195| 230.861008| 231.164821  | 231.468634| 231.772447|1743.008589|  32.489217| 465.284488  |---  | Count after eliminating 7 and transferring votes. All losing | candidates are eliminated.

=
============================================================= 31|          |           |           |           |           |             |           | 227.794016| 228.143268| 465.284820| 229.492520| 229.841772  | 230.191024| 230.540276| 230.889528| 231.238780| 231.588032| 231.937284  | 232.286536| 232.635788|1768.136356|   3.590013| 461.694807  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 10, 0.650748.

=
============================================================= 32|          |           |           |           |           |             |           | 227.834176| 228.188448| 461.695520| 229.542720| 229.896992  | 230.251264| 230.605536| 230.959808| 231.314080| 231.668352| 232.022624  | 232.376896| 232.731168|1770.912416|   0.397293| 461.298227  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 10, 0.645728.

=
============================================================= 33|          |           |           |           |           |             |           | 227.838616| 228.193443| 461.298695| 229.548270| 229.903097  | 230.257924| 230.612751| 230.967578| 231.322405| 231.677232| 232.032059  | 232.386886| 232.741713|1771.219331|   0.044313| 461.254382  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 10, 0.645173.

=
============================================================= 34|          |           |           |           |           |             |           |           | 228.193443| 461.298695| 229.548270| 229.903097  | 230.257924| 230.612751| 230.967578| 231.322405| 231.677232| 232.032059  | 232.386886| 232.741713|1999.057947|  32.592687| 428.706008  |---  | Count after eliminating 8 and transferring votes. All losing | candidates are eliminated.

=
============================================================= 35|          |           |           |           |           |             |           |           | 228.603699| 428.706135| 230.004110| 230.404521  | 230.804932| 231.205343| 231.605754| 232.006165| 232.406576| 232.806987  | 233.207398| 233.607809|2024.630571|   3.653359| 425.052776  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 10, 0.599589.

=
============================================================= 36|          |           |           |           |           |             |           |           | 228.649680| 425.053200| 230.055200| 230.460720  | 230.866240| 231.271760| 231.677280| 232.082800| 232.488320| 232.893840  | 233.299360| 233.704880|2027.496720|   0.409874| 424.643326  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 10, 0.594480.

=
============================================================= 37|          |           |           |           |           |             |           |           |           | 425.053200| 230.055200| 230.460720  | 230.866240| 231.271760| 231.677280| 232.082800| 232.488320| 232.893840  | 233.299360| 233.704880|2256.146400|  33.074114| 391.979086  |---  | Count after eliminating 9 and transferring votes. All losing | candidates are eliminated.

=
============================================================= 38|          |           |           |           |           |             |           |           |           | 391.979445| 230.517770| 230.969547  | 231.421324| 231.873101| 232.324878| 232.776655| 233.228432| 233.680209  | 234.131986| 234.583763|2282.512890|   3.767000| 388.212445  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 10, 0.548223.

=
============================================================= 39|          |           |           |           |           |             |           |           |           | 388.212825| 230.570450| 231.027495  | 231.484540| 231.941585| 232.398630| 232.855675| 233.312720| 233.769765  | 234.226810| 234.683855|2285.515650|   0.429346| 387.783479  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 10, 0.542955.

=
============================================================= 40|          |           |           |           |           |             |           |           |           | 388.212825|           | 231.027495  | 231.484540| 231.941585| 232.398630| 232.855675| 233.312720| 233.769765  | 234.226810| 234.683855|2516.086100|  33.367982| 354.844843  |---  | Count after eliminating 11 and transferring votes. All losing | candidates are eliminated.

=
============================================================= 41|          |           |           |           |           |             |           |           |           | 354.845205|           | 231.540843  | 232.044556| 232.548269| 233.051982| 233.555695| 234.059408| 234.563121  | 235.066834| 235.570547|2543.153540|   3.867139| 350.978066  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 10, 0.496287.

=
============================================================= 42|          |           |           |           |           |             |           |           |           | 350.978485|           | 231.600331  | 232.109452| 232.618573| 233.127694| 233.636815| 234.145936| 234.655057  | 235.164178| 235.673299|2546.290180|   0.448510| 350.529975  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 10, 0.490879.

=
============================================================= 43|          |           |           |           |           |             |           |           |           | 350.978485|           |             | 232.109452| 232.618573| 233.127694| 233.636815| 234.145936| 234.655057  | 235.164178| 235.673299|2777.890511|  33.534272| 317.444213  |---  | Count after eliminating 12 and transferring votes. All losing | candidates are eliminated.

=
============================================================= 44|          |           |           |           |           |             |           |           |           | 317.444270|           |             | 232.672264| 233.228286| 233.784308| 234.340330| 234.896352| 235.452374  | 236.008396| 236.564418|2805.609002|   3.959841| 313.484429  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 10, 0.443978.

=
============================================================= 45|          |           |           |           |           |             |           |           |           | 313.484600|           |             | 232.738720| 233.300280| 233.861840| 234.423400| 234.984960| 235.546520  | 236.108080| 236.669640|2808.881960|   0.467737| 313.016863  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 10, 0.438440.

=
============================================================= 46|          |           |           |           |           |             |           |           |           | 313.484600|           |             |           | 233.300280| 233.861840| 234.423400| 234.984960| 235.546520  | 236.108080| 236.669640|3041.620680|  33.716125| 279.768475  |---  | Count after eliminating 13 and transferring votes. All losing | candidates are eliminated.

=
============================================================= 47|          |           |           |           |           |             |           |           |           | 279.768775|           |             |           | 233.913295| 234.522010| 235.130725| 235.739440| 236.348155  | 236.956870| 237.565585|3070.055145|   4.062367| 275.706408  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 10, 0.391285.

=
============================================================= 48|          |           |           |           |           |             |           |           |           | 275.706860|           |             |           | 233.987148| 234.601544| 235.215940| 235.830336| 236.444732  | 237.059128| 237.673524|3073.480788|   0.489829| 275.217031  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 10, 0.385604.

=
============================================================= 49|          |           |           |           |           |             |           |           |           | 275.706860|           |             |           |           | 234.601544| 235.215940| 235.830336| 236.444732  | 237.059128| 237.673524|3307.467936|  33.916565| 241.790295  |---  | Count after eliminating 14 and transferring votes. All losing | candidates are eliminated.

=
============================================================= 50|          |           |           |           |           |             |           |           |           | 241.790835|           |             |           |           | 235.265634| 235.927465| 236.589296| 237.251127  | 237.912958| 238.574789|3336.687896|   5.430537| 237.616015  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 10, 0.338169. Candidates 19 and 20 have | reached the threshold and are elected.

=
============================================================= 51|          |           |           |           |           |             |           |           |           | 237.616665|           |             |           |           | 235.347366| 236.015035| 236.682704| 237.350373  | 237.720995| 237.726671|3341.540191|   2.723384| 236.922830  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 10, 0.332331; 19, 0.998752; and 20, | 0.995982. Candidate 18 has reached the threshold and is elected.

=
============================================================= 52|          |           |           |           |           |             |           |           |           | 236.923115|           |             |           |           | 235.360946| 236.029585| 236.698224| 236.939365  | 236.940300| 236.941310|3344.167155|   1.704564| 236.547550  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 10, 0.331361; 18, 0.998199; 19, 0.995399; | and 20, 0.992615. Candidate 17 has reached the threshold and is | elected.

=
============================================================= 53|          |           |           |           |           |             |           |           |           | 236.547740|           |             |           |           | 235.368296| 236.037460| 236.556078| 236.556604  | 236.557171| 236.557572|3345.819079|   1.217360| 236.311561  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 10, 0.330836; 17, 0.999364; 18, 0.996549; | 19, 0.993750; and 20, 0.990966.

=
============================================================= 54|          |           |           |           |           |             |           |           |           | 236.311790|           |             |           |           | 235.372916| 236.042410| 236.317068| 236.317217  | 236.317643| 236.317904|3347.003052|   0.869512| 236.142422  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 10, 0.330506; 17, 0.998332; 18, 0.995517; | 19, 0.992719; and 20, 0.989936.

=
============================================================= 55|          |           |           |           |           |             |           |           |           | 236.143050|           |             |           |           | 235.376220| 236.045950| 236.146378| 236.146495  | 236.146651| 236.146880|3347.848376|   0.645438| 236.021661  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 10, 0.330270; 17, 0.997595; 18, 0.994781; | 19, 0.991983; and 20, 0.989201. Candidate 16 has reached the threshold | and is elected.

Winners are 10, 16, 17, 18, 19, and 20.

Files
array ( 12 =>   array ( 'count' => 226, 'rank' => array (     1 => 12,    ), ), 1 =>   array ( 'count' => 225, 'rank' => array (     1 => 1,    ), ), 8 =>   array ( 'count' => 225, 'rank' => array (     1 => 8,    ), ), 18 =>   array ( 'count' => 226, 'rank' => array (     1 => 18,    ), ), 2 =>   array ( 'count' => 225, 'rank' => array (     1 => 2,    ), ), 15 =>   array ( 'count' => 226, 'rank' => array (     1 => 15,    ), ), 4 =>   array ( 'count' => 225, 'rank' => array (     1 => 4,    ), ), 7 =>   array ( 'count' => 225, 'rank' => array (     1 => 7,    ), ), 20 =>   array ( 'count' => 226, 'rank' => array (     1 => 20,    ), ), '10_5' =>   array ( 'count' => 5, 'rank' => array (     1 => 10,      2 => 5,    ), ), 9 =>   array ( 'count' => 225, 'rank' => array (     1 => 9,    ), ), 11 =>   array ( 'count' => 226, 'rank' => array (     1 => 11,    ), ), 14 =>   array ( 'count' => 226, 'rank' => array (     1 => 14,    ), ), 6 =>   array ( 'count' => 225, 'rank' => array (     1 => 6,    ), ), '10_19' =>   array ( 'count' => 18, 'rank' => array (     1 => 10,      2 => 19,    ), ), 3 =>   array ( 'count' => 225, 'rank' => array (     1 => 3,    ), ), 17 =>   array ( 'count' => 226, 'rank' => array (     1 => 17,    ), ), '10_13' =>   array ( 'count' => 12, 'rank' => array (     1 => 10,      2 => 13,    ), ), 5 =>   array ( 'count' => 225, 'rank' => array (     1 => 5,    ), ), 19 =>   array ( 'count' => 226, 'rank' => array (     1 => 19,    ), ), '10_11' =>   array ( 'count' => 10, 'rank' => array (     1 => 10,      2 => 11,    ), ), '10_9' =>   array ( 'count' => 9, 'rank' => array (     1 => 10,      2 => 9,    ), ), 13 =>   array ( 'count' => 226, 'rank' => array (     1 => 13,    ), ), 16 =>   array ( 'count' => 226, 'rank' => array (     1 => 16,    ), ), '10_1' =>   array ( 'count' => 1, 'rank' => array (     1 => 10,      2 => 1,    ), ), '10_7' =>   array ( 'count' => 7, 'rank' => array (     1 => 10,      2 => 7,    ), ), '10_14' =>   array ( 'count' => 13, 'rank' => array (     1 => 10,      2 => 14,    ), ), '10_6' =>   array ( 'count' => 6, 'rank' => array (     1 => 10,      2 => 6,    ), ), '10_18' =>   array ( 'count' => 17, 'rank' => array (     1 => 10,      2 => 18,    ), ), '10_8' =>   array ( 'count' => 8, 'rank' => array (     1 => 10,      2 => 8,    ), ), '10_2' =>   array ( 'count' => 2, 'rank' => array (     1 => 10,      2 => 2,    ), ), '10_17' =>   array ( 'count' => 16, 'rank' => array (     1 => 10,      2 => 17,    ), ), '10_15' =>   array ( 'count' => 14, 'rank' => array (     1 => 10,      2 => 15,    ), ), '10_16' =>   array ( 'count' => 15, 'rank' => array (     1 => 10,      2 => 16,    ), ), '10_12' =>   array ( 'count' => 11, 'rank' => array (     1 => 10,      2 => 12,    ), ), '10_3' =>   array ( 'count' => 3, 'rank' => array (     1 => 10,      2 => 3,    ), ), '10_20' =>   array ( 'count' => 19, 'rank' => array (     1 => 10,      2 => 20,    ), ), '10_4' =>   array ( 'count' => 4, 'rank' => array (     1 => 10,      2 => 4,    ), ), 10 =>   array ( 'count' => 525, 'rank' => array (     1 => 10,    ), ), )
 * blt: https://github.com/dominic998/SecurePoll-Test-Data/blob/main/test_data/20_6_5000_536228607.blt
 * php:

Environment

 * Where you tested: local docker using phpunit
 * Version of SecurePoll: commit 2ec357fdb086cece986d60d1b34759968c075c65 (patchset 15 from https://gerrit.wikimedia.org/r/c/mediawiki/extensions/SecurePoll/+/704454)