How it Works


DMP is a proportional electoral system that would require minimal changes to Canada’s existing electoral system, aside from the electoral formula, to be implemented.  The first necessary change would be the transformation of Canada’s single-member districts into two-member districts. To maintain the size of the assembly, districts would be amalgamated rather than given an extra representative. This would represent a minor reduction in local representation but would not negatively affect the average voter to representative ratio at the district level. The second required change would be less substantial. Each voter would still mark only one “X” on the ballot, but, in most circumstances, this vote would be cast for two ranked candidates running under the same party banner (the two exceptions to this would be when a party nominates only one candidate and when an independent seeks election). A sample DMP ballot can be viewed here.

To elect the two members from each district, DMP makes use of two methods.  The first seat in each district is assigned by plurality (these will be referred to as the first seats). This ensures that the first place candidate always wins a seat.  The second seat in each district, in general, is assigned in a manner that achieves proportional results at the regional level (these will be referred to as the second seats).  The seat assignment process can be broken down into three straightforward steps:

1. Determine the number of seats each party deserves:

a. Determine the fraction of the regional vote each party has received.

b. Using the fraction determined in step a, calculate the number of seats each party deserves in the region:

(fraction of regional vote received) X (total seats available) = (# of seats party deserves)

Record the whole number and any remaining fraction (called the remainder) of seats each party deserves.

c. Determine the number of seats that remain to be allocated by summing the remainders of all of the parties. Allocate these seats to the parties with the largest remainders.

2. Determine the winners of the first seats using plurality.

3. Determine the winners of the second seats:

a. For parties that won first seats, transfer half of the vote they received to their second listed candidates.

b. Make a ranked list of each party’s candidates. Place candidates that received the largest fraction of the vote in their district at the top of the list and those that received the lowest fraction of the vote in their district at the bottom.

c. Determine the number of seats each party needs, N, in addition to the first seats they have been assigned.

d. Assign each party the first N seats from its ranked list.

e. If multiple parties have been assigned the same second seat, assign the seat to the party that performed the best in the district. Assign parties that lost a seat due to a conflict the next seat on their list.

f. Repeat step e until no seat assignments conflict.

A brief description of the seat assignment process is given in the following video:

Thank you to Anna Keenan for creating and sharing this video.


Formal thresholds ensure that parties and/or candidates have an acceptable level of support before they are able to win seats on a proportional basis. There are several options that will work with DMP. The two most worthy of consideration are:

  1. A regional threshold: in order to be awarded seats on a proportional basis, parties need to receive a minimum fraction of the regional vote.
  2. A district threshold: candidates must receive a minimum fraction of their district’s vote to qualify for election.

Regional thresholds focus on the legitimacy of parties, whereas district thresholds focus on the legitimacy of candidates. Since the largest region proposed on this website encompasses 122 seats, a district threshold would be sufficient to prevent parties with extremely low levels of support from routinely electing candidates. Specifically, a district threshold of 5% is being recommended, and this is what has been used for the simulations presented on this website.

The Reserve

In order to allow all parties a fair opportunity to elect their top candidates, a small number of seats can be set aside for assignment in a separate application of the DMP algorithm. These seats are collectively referred to as the reserve. The seats that remain are called the core allocation and are assigned first. It is during the core seat assignment process that parties will be able to elect their best candidates.

A party’s reserve allocation is determined by the reserve factor and is calculated as follows: (reserve factor)X(seats party deserves) = (reserve allocation). The reserve allocation is always rounded down. Therefore, a party that deserves 35 seats would have a reserve allocation of 3 seats if the reserve factor is 10%.

Once the reserve allocations are known, the core allocations can be found. Each party’s core allocation is calculated in the following way: (seats party deserves) – (reserve allocation) = (core allocation). Each party’s core allocation is assigned using the three steps outlined in the Overview.

The seats in the reserve are assigned after the core allocations. These seats are assigned using steps 3.d to 3.f of the DMP algorithm, with the additional rule that core seats always beat reserve seats. For example, if Party A is assigned the second seat in District 1 during the core seat assignment process, Party B cannot win the second seat in District 1 during the reserve seat assignment process, even if Party B performed better in that district than Party A.

Thank you to Rhys Goldstein for suggesting the use of a reserve factor.

More Details

To view a demonstration of how election outcomes are determined with DMP, see the blog post “An Example: Using DMP to Determine the Outcome of the 2015 PEI Election.”

For some excellent educational resources, go to the “Other DMP Resources” page.

Finally, for a more in depth explanation, see the full report on DMP.