Majority Approval Dual Dropping Preference (replaces Condorcet with Dual Dropping): Approval Preference voting method (not implemented by program): 1) Voters are prompted to identify the option(s) they approve. 2) Voters who approve more than one option are then prompted to rank their approved options. Ballot completion and count method: 1) Non-voted options are given equal last place preference. 2) Non-voted equal preference option pairs are counted zero votes. 3) Voted equal preference option pairs are given half vote each. MADDP tabulation method: 1) Tiebreaker is generated by (psuedo-)randomly reading previously unread ballots until full ranking is generated or all ballots were read. 2) Majority Approval: 2a) If there are no majority approval count options then GOTO 3a. 2b) The option(s) with the largest majority approval count win. 2c) If there is a tie that results in too many winners then execute the approval option tiebreaker routines described below. 2d) If requested number of winners generated then FINISHED 2e) For multi-winner contests, winner(s) from previous steps are dropped then GOTO 2a. 3) Dual Dropping Preference: 3a) Sort the pairs by winning magnitude. 3b) If two or more pairs have the same winning magnitude then execute the ranked pair tiebreaker routines described below. 3c) Compute SCCD winner(s) (measure of strength of defeat is winning magnitude) 3d) Compute MAM winner(s) 3e) Option(s) that win both SCCD and MAM is(are) winner(s). GOTO 3h 3f) If no option wins both SCCD and MAM then SSCD or MAM winner(s) are selected based on lower dropping cost (default measure of dropping cost is margins). Mark this as a branch location. 3g) If dropping costs are tied then winner(s) is(are) MAM winner(s). Mark this as a branch location. 3h) If required number of winners generated then GOTO step 3j. 3i) For multi-winner contests, winner(s) from previous steps are dropped. GOTO 3a. 3j) Compare dropping cost of current outcome with previous lowest dropping cost outcome and save current outcome if its dropping cost is smaller. Save multiple outcomes if dropping cost tie. 3k) If there is an unvisited branch from steps 3f/g, restore that branch, select higher dropping cost method or CSSD winners if dropping costs were tied. GOTO 3h 3l) Winners are in saved outcome. FINISHED. Approval option tiebreaker procedure (tentative): 1) Most 1st place votes: 1a) If no first place vote counts then GOTO 2a 1b) Select the option(s) from among the list of tied options with the most first place votes. 1c) If number of selected options plus number of winners exceeds requested number of winners then unselect the option(s) just selected in step 1a and GOTO 2a. 1d) Designate selected option(s) as winner(s) and remove option(s) from list of tied options. 1e) If there are two or more remaining unselected options and the required number of winners is not met then GOTO 1a. 1f) RETURN 2) Tiebreaker ranking: 2a) If no option in list of tied options appears in tiebreaker then FINISHED. 2b) Select the option from among list of tied options that is ranked highest in tiebreaker. 2c) Designate selected option as winner and remove option from list of tied options. 2d) If there are two or more remaining unselected options and the required number of winners is not met then GOTO 2a. 2e) RETURN Pair rank tiebreaker procedure (as defined for MAM): 1) Pair with larger margins: 1a) Compare margins. Option pair with largest margin ranked ahead of other option. 1b) If tie was broken by previous step then FINISHED. 2) Pair whose loser has lower tiebreaker ranking: 2a) If one or both losing options are not in tiebreaker ranking then GOTO 3a. 2b) Compare tiebreaker rank of losing options of each pair. Option pair with lower ranked loser is ranked ahead of other option pair. 2c) If tie was broken by previous step then FINISHED. 3) Pair whose winner has higher tiebreaker ranking: 3a) If one or both winning options are not in tiebreaker ranking then GOTO 4a. 3b) Compare tiebreaker ranks of winning options of each pair. Option pair with higher ranked winner is ranked ahead of other option pair. 3c) If tie was broken by previous step then FINISHED. 4) Pair whose loser is defeated by other pair's loser: 4a) Construct new pair from losing options. Determine which option is loser of this new pair. 4b) The original pair whose loser is also new pair's loser is ranked higher. 4c) If tie was broken by previous step then FINISHED. 5) Pair whose winner defeats other pair's winner: 5a) Construct new pair from winning options. Determine which option is winner of this new pair. 5b) The original pair whose winner is also new pair's winner is ranked higher. 5c) FINISHED. Comments: The MADDP PERL script will default to single winner contest. Users can specify their own tiebreaker ranking. The PERL script that generates the tally matrix from the voted preference ballot list has various options related to completing incomplete ballots, counting equal preference voted and non-voted options. The scripts will work with approval and preference voting methods with or without approval cutoffs for preference. The MADDP PERL script will have options to specify number of winners, first compute majority first place winner(s), not compute majority approval winner(s), compute the MAM, CSSD, SD, or Minimum Dropping Cost winner(s) instead of Dual Dropping winner, not do the global dropping cost minimization (no branching), use different measures of strength of defeat and dropping cost including relative margins and sum of magnitudes and margins, and skip each of the tiebreakers. There is a third PERL script to generate a tally matrix of size N outcomes. There are two more PERL scripts, one to convert Graphical Voter Interface output to voted preference ballot list and one to convert to pairwise tally matrix. This is work in progress, it will take time yet to complete.