2016 · Mogalakwena council results
Matsitsileng, Limpopo
ANC retains its majority
Council seats
Other2 seats
| Party / entry | Seats | Share of seats (%) |
|---|---|---|
| AFRICAN NATIONAL CONGRESS | 41 | 64,0625 |
| ECONOMIC FREEDOM FIGHTERS | 13 | 20,3125 |
| DEMOCRATIC ALLIANCE | 6 | 9,375 |
| AZANIAN PEOPLE'S ORGANISATION | 1 | 1,5625 |
| CONGRESS OF THE PEOPLE | 1 | 1,5625 |
| MOGALAKWENA RESIDENTS ASSOCIATION | 1 | 1,5625 |
| VRYHEIDSFRONT PLUS | FREEDOM FRONT PLUS | 1 | 1,5625 |
| AFRICAN CHRISTIAN DEMOCRATIC PARTY | 0 | 0 |
| AFRICAN PEOPLE'S CONVENTION | 0 | 0 |
| AFRICAN PEOPLE'S SOCIALIST PARTY | 0 | 0 |
| INDEPENDENTS | 0 | 0 |
| PAN AFRICANIST CONGRESS OF AZANIA | 0 | 0 |
| UNITED CHRISTIAN DEMOCRATIC PARTY | 0 | 0 |
64 seats; 33 needed for a majority.
Combined ballot votes
Combined ballot votes
Other: show remaining parties: hide remaining parties4.0%5 522 votes
| Party / entry | Candidate | Votes | Vote share (%) |
|---|---|---|---|
| AFRICAN NATIONAL CONGRESS | — | 87 823 | 63,4977 |
| ECONOMIC FREEDOM FIGHTERS | — | 27 447 | 19,8447 |
| DEMOCRATIC ALLIANCE | — | 12 935 | 9,3522 |
| VRYHEIDSFRONT PLUS | FREEDOM FRONT PLUS | — | 2 376 | 1,7179 |
| MOGALAKWENA RESIDENTS ASSOCIATION | — | 2 206 | 1,595 |
| INDEPENDENTS | — | 2 096 | 1,5154 |
| AZANIAN PEOPLE'S ORGANISATION | — | 847 | 0,6124 |
| CONGRESS OF THE PEOPLE | — | 604 | 0,4367 |
| AFRICAN CHRISTIAN DEMOCRATIC PARTY | — | 585 | 0,423 |
| AFRICAN PEOPLE'S CONVENTION | — | 539 | 0,3897 |
| PAN AFRICANIST CONGRESS OF AZANIA | — | 383 | 0,2769 |
| UNITED CHRISTIAN DEMOCRATIC PARTY | — | 343 | 0,248 |
| AFRICAN PEOPLE'S SOCIALIST PARTY | — | 125 | 0,0904 |
138309 valid votes. Shares use this ballot’s party totals. All published entries are included.
How the vote changed
Council seats by election
Swipe to see history
Seats unavailable for this election.
32 for a majority · 63 seats
32 for a majority · 63 seats
33 for a majority · 64 seats
| Election | Party / entry | Seats | Council total | Majority needed |
|---|---|---|---|---|
| 2 000 | Seat allocation unavailable | Unavailable | Unavailable | Unavailable |
| 2 006 | AFRICAN NATIONAL CONGRESS | 55 | 63 | 32 |
| 2 006 | DEMOCRATIC ALLIANCE | 3 | 63 | 32 |
| 2 006 | AFRICAN CHRISTIAN DEMOCRATIC PARTY | 1 | 63 | 32 |
| 2 006 | PAN AFRICANIST CONGRESS OF AZANIA | 1 | 63 | 32 |
| 2 006 | UNITED DEMOCRATIC MOVEMENT | 1 | 63 | 32 |
| 2 006 | UNITED INDEPENDENT FRONT | 1 | 63 | 32 |
| 2 006 | VRYHEIDSFRONT PLUS | FREEDOM FRONT PLUS | 1 | 63 | 32 |
| 2 006 | AZANIAN PEOPLE'S ORGANISATION | 0 | 63 | 32 |
| 2 006 | INDEPENDENTS | 0 | 63 | 32 |
| 2 011 | AFRICAN NATIONAL CONGRESS | 53 | 63 | 32 |
| 2 011 | DEMOCRATIC ALLIANCE | 5 | 63 | 32 |
| 2 011 | CONGRESS OF THE PEOPLE | 2 | 63 | 32 |
| 2 011 | AFRICAN PEOPLE'S CONVENTION | 1 | 63 | 32 |
| 2 011 | AZANIAN PEOPLE'S ORGANISATION | 1 | 63 | 32 |
| 2 011 | VRYHEIDSFRONT PLUS | FREEDOM FRONT PLUS | 1 | 63 | 32 |
| 2 011 | AFRICAN CHRISTIAN DEMOCRATIC PARTY | 0 | 63 | 32 |
| 2 011 | INDEPENDENTS | 0 | 63 | 32 |
| 2 011 | NATIONAL FREEDOM PARTY | 0 | 63 | 32 |
| 2 011 | PAN AFRICANIST CONGRESS OF AZANIA | 0 | 63 | 32 |
| 2 011 | UNITED DEMOCRATIC MOVEMENT | 0 | 63 | 32 |
| 2 016 | AFRICAN NATIONAL CONGRESS | 41 | 64 | 33 |
| 2 016 | ECONOMIC FREEDOM FIGHTERS | 13 | 64 | 33 |
| 2 016 | DEMOCRATIC ALLIANCE | 6 | 64 | 33 |
| 2 016 | AZANIAN PEOPLE'S ORGANISATION | 1 | 64 | 33 |
| 2 016 | CONGRESS OF THE PEOPLE | 1 | 64 | 33 |
| 2 016 | MOGALAKWENA RESIDENTS ASSOCIATION | 1 | 64 | 33 |
| 2 016 | VRYHEIDSFRONT PLUS | FREEDOM FRONT PLUS | 1 | 64 | 33 |
| 2 016 | AFRICAN CHRISTIAN DEMOCRATIC PARTY | 0 | 64 | 33 |
| 2 016 | AFRICAN PEOPLE'S CONVENTION | 0 | 64 | 33 |
| 2 016 | AFRICAN PEOPLE'S SOCIALIST PARTY | 0 | 64 | 33 |
| 2 016 | INDEPENDENTS | 0 | 64 | 33 |
| 2 016 | PAN AFRICANIST CONGRESS OF AZANIA | 0 | 64 | 33 |
| 2 016 | UNITED CHRISTIAN DEMOCRATIC PARTY | 0 | 64 | 33 |
Ward + municipal PR votes. Missing and grouped entries are not assumed to be zero. Published boundaries may differ between elections.
Ward + municipal PR votes by election
Swipe to see history
| Election | Party | Votes | Vote share (%) | Valid ballot total | Availability |
|---|---|---|---|---|---|
| 2 000 | AFRICAN NATIONAL CONGRESS | 76 790 | 85,6391 | 89 667 | Reported |
| 2 000 | ECONOMIC FREEDOM FIGHTERS | 0 | 0 | 89 667 | No votes recorded in the complete party list. |
| 2 000 | DEMOCRATIC ALLIANCE | 6 680 | 7,4498 | 89 667 | Reported |
| 2 000 | PAN AFRICANIST CONGRESS OF AZANIA | 3 853 | 4,297 | 89 667 | Reported |
| 2 000 | CONGRESS OF THE PEOPLE | 0 | 0 | 89 667 | No votes recorded in the complete party list. |
| 2 000 | AFRICAN CHRISTIAN DEMOCRATIC PARTY | 0 | 0 | 89 667 | No votes recorded in the complete party list. |
| 2 000 | VRYHEIDSFRONT PLUS | FREEDOM FRONT PLUS | 0 | 0 | 89 667 | No votes recorded in the complete party list. |
| 2 000 | MOGALAKWENA RESIDENTS ASSOCIATION | 0 | 0 | 89 667 | No votes recorded in the complete party list. |
| 2 000 | UNITED INDEPENDENT FRONT | 0 | 0 | 89 667 | No votes recorded in the complete party list. |
| 2 000 | AFRICAN PEOPLE'S CONVENTION | 0 | 0 | 89 667 | No votes recorded in the complete party list. |
| 2 000 | INKATHA FREEDOM PARTY | 974 | 1,0862 | 89 667 | Reported |
| 2 000 | AZANIAN PEOPLE'S ORGANISATION | 0 | 0 | 89 667 | No votes recorded in the complete party list. |
| 2 000 | UNITED DEMOCRATIC MOVEMENT | 770 | 0,8587 | 89 667 | Reported |
| 2 000 | UNITED CHRISTIAN DEMOCRATIC PARTY | 0 | 0 | 89 667 | No votes recorded in the complete party list. |
| 2 000 | NATIONAL FREEDOM PARTY | 0 | 0 | 89 667 | No votes recorded in the complete party list. |
| 2 000 | AFRICAN PEOPLE'S SOCIALIST PARTY | 0 | 0 | 89 667 | No votes recorded in the complete party list. |
| 2 006 | AFRICAN NATIONAL CONGRESS | 94 567 | 86,169 | 109 746 | Reported |
| 2 006 | ECONOMIC FREEDOM FIGHTERS | 0 | 0 | 109 746 | No votes recorded in the complete party list. |
| 2 006 | DEMOCRATIC ALLIANCE | 4 627 | 4,2161 | 109 746 | Reported |
| 2 006 | PAN AFRICANIST CONGRESS OF AZANIA | 2 577 | 2,3481 | 109 746 | Reported |
| 2 006 | CONGRESS OF THE PEOPLE | 0 | 0 | 109 746 | No votes recorded in the complete party list. |
| 2 006 | AFRICAN CHRISTIAN DEMOCRATIC PARTY | 1 957 | 1,7832 | 109 746 | Reported |
| 2 006 | VRYHEIDSFRONT PLUS | FREEDOM FRONT PLUS | 1 267 | 1,1545 | 109 746 | Reported |
| 2 006 | MOGALAKWENA RESIDENTS ASSOCIATION | 0 | 0 | 109 746 | No votes recorded in the complete party list. |
| 2 006 | UNITED INDEPENDENT FRONT | 1 464 | 1,334 | 109 746 | Reported |
| 2 006 | AFRICAN PEOPLE'S CONVENTION | 0 | 0 | 109 746 | No votes recorded in the complete party list. |
| 2 006 | INKATHA FREEDOM PARTY | 0 | 0 | 109 746 | No votes recorded in the complete party list. |
| 2 006 | AZANIAN PEOPLE'S ORGANISATION | 487 | 0,4438 | 109 746 | Reported |
| 2 006 | UNITED DEMOCRATIC MOVEMENT | 985 | 0,8975 | 109 746 | Reported |
| 2 006 | UNITED CHRISTIAN DEMOCRATIC PARTY | 0 | 0 | 109 746 | No votes recorded in the complete party list. |
| 2 006 | NATIONAL FREEDOM PARTY | 0 | 0 | 109 746 | No votes recorded in the complete party list. |
| 2 006 | AFRICAN PEOPLE'S SOCIALIST PARTY | 0 | 0 | 109 746 | No votes recorded in the complete party list. |
| 2 011 | AFRICAN NATIONAL CONGRESS | 108 889 | 80,0902 | 135 958 | Reported |
| 2 011 | ECONOMIC FREEDOM FIGHTERS | 0 | 0 | 135 958 | No votes recorded in the complete party list. |
| 2 011 | DEMOCRATIC ALLIANCE | 9 258 | 6,8095 | 135 958 | Reported |
| 2 011 | PAN AFRICANIST CONGRESS OF AZANIA | 879 | 0,6465 | 135 958 | Reported |
| 2 011 | CONGRESS OF THE PEOPLE | 4 733 | 3,4812 | 135 958 | Reported |
| 2 011 | AFRICAN CHRISTIAN DEMOCRATIC PARTY | 868 | 0,6384 | 135 958 | Reported |
| 2 011 | VRYHEIDSFRONT PLUS | FREEDOM FRONT PLUS | 1 039 | 0,7642 | 135 958 | Reported |
| 2 011 | MOGALAKWENA RESIDENTS ASSOCIATION | 0 | 0 | 135 958 | No votes recorded in the complete party list. |
| 2 011 | UNITED INDEPENDENT FRONT | 0 | 0 | 135 958 | No votes recorded in the complete party list. |
| 2 011 | AFRICAN PEOPLE'S CONVENTION | 1 537 | 1,1305 | 135 958 | Reported |
| 2 011 | INKATHA FREEDOM PARTY | 0 | 0 | 135 958 | No votes recorded in the complete party list. |
| 2 011 | AZANIAN PEOPLE'S ORGANISATION | 1 234 | 0,9076 | 135 958 | Reported |
| 2 011 | UNITED DEMOCRATIC MOVEMENT | 477 | 0,3508 | 135 958 | Reported |
| 2 011 | UNITED CHRISTIAN DEMOCRATIC PARTY | 0 | 0 | 135 958 | No votes recorded in the complete party list. |
| 2 011 | NATIONAL FREEDOM PARTY | 124 | 0,0912 | 135 958 | Reported |
| 2 011 | AFRICAN PEOPLE'S SOCIALIST PARTY | 0 | 0 | 135 958 | No votes recorded in the complete party list. |
| 2 016 | AFRICAN NATIONAL CONGRESS | 87 823 | 63,4977 | 138 309 | Reported |
| 2 016 | ECONOMIC FREEDOM FIGHTERS | 27 447 | 19,8447 | 138 309 | Reported |
| 2 016 | DEMOCRATIC ALLIANCE | 12 935 | 9,3522 | 138 309 | Reported |
| 2 016 | PAN AFRICANIST CONGRESS OF AZANIA | 383 | 0,2769 | 138 309 | Reported |
| 2 016 | CONGRESS OF THE PEOPLE | 604 | 0,4367 | 138 309 | Reported |
| 2 016 | AFRICAN CHRISTIAN DEMOCRATIC PARTY | 585 | 0,423 | 138 309 | Reported |
| 2 016 | VRYHEIDSFRONT PLUS | FREEDOM FRONT PLUS | 2 376 | 1,7179 | 138 309 | Reported |
| 2 016 | MOGALAKWENA RESIDENTS ASSOCIATION | 2 206 | 1,595 | 138 309 | Reported |
| 2 016 | UNITED INDEPENDENT FRONT | 0 | 0 | 138 309 | No votes recorded in the complete party list. |
| 2 016 | AFRICAN PEOPLE'S CONVENTION | 539 | 0,3897 | 138 309 | Reported |
| 2 016 | INKATHA FREEDOM PARTY | 0 | 0 | 138 309 | No votes recorded in the complete party list. |
| 2 016 | AZANIAN PEOPLE'S ORGANISATION | 847 | 0,6124 | 138 309 | Reported |
| 2 016 | UNITED DEMOCRATIC MOVEMENT | 0 | 0 | 138 309 | No votes recorded in the complete party list. |
| 2 016 | UNITED CHRISTIAN DEMOCRATIC PARTY | 343 | 0,248 | 138 309 | Reported |
| 2 016 | NATIONAL FREEDOM PARTY | 0 | 0 | 138 309 | No votes recorded in the complete party list. |
| 2 016 | AFRICAN PEOPLE'S SOCIALIST PARTY | 125 | 0,0904 | 138 309 | Reported |
Ward + municipal PR votes. Missing and grouped entries are not assumed to be zero. Published boundaries may differ between elections.
History data & sources
Ward + municipal PR votes. Connecting bands show the same party’s share or seats between elections, not individual voters moving between parties. Select a year to inspect its values; use the election-year selector to explore its results and places.
The chart names the five largest parties across these elections. The vote list also names parties gaining at least 2 percentage points since the previous election; remaining votes are combined under Other. Other’s change compares the same group of parties in both elections. Missing values remain unavailable.
- All points use the same ballot basis. Ballot totals are not counts of individual voters.
- Missing or grouped party rows remain gaps unless a complete, ungrouped list establishes zero votes.
- Municipal boundaries can change between elections. Published area results are not boundary-adjusted.
Ward results
Browse wardsWards in Mogalakwena
32 wards
| Ward | Election | Party / entry | Votes | Vote share (%) |
|---|---|---|---|---|
| Ward 1 | 2 016 | AFRICAN NATIONAL CONGRESS | 3 717 | 76,7658 |
| Ward 1 | 2 016 | ECONOMIC FREEDOM FIGHTERS | 887 | 18,3189 |
| Ward 2 | 2 016 | AFRICAN NATIONAL CONGRESS | 2 267 | 64,827 |
| Ward 2 | 2 016 | ECONOMIC FREEDOM FIGHTERS | 696 | 19,9028 |
| Ward 3 | 2 016 | AFRICAN NATIONAL CONGRESS | 2 860 | 60,0588 |
| Ward 3 | 2 016 | ECONOMIC FREEDOM FIGHTERS | 1 659 | 34,8383 |
| Ward 4 | 2 016 | AFRICAN NATIONAL CONGRESS | 3 149 | 69,9778 |
| Ward 4 | 2 016 | ECONOMIC FREEDOM FIGHTERS | 734 | 16,3111 |
| Ward 5 | 2 016 | AFRICAN NATIONAL CONGRESS | 3 061 | 79,4034 |
| Ward 5 | 2 016 | ECONOMIC FREEDOM FIGHTERS | 473 | 12,2698 |
| Ward 6 | 2 016 | AFRICAN NATIONAL CONGRESS | 2 869 | 69,7205 |
| Ward 6 | 2 016 | ECONOMIC FREEDOM FIGHTERS | 556 | 13,5115 |
| Ward 7 | 2 016 | AFRICAN NATIONAL CONGRESS | 2 496 | 71,6829 |
| Ward 7 | 2 016 | ECONOMIC FREEDOM FIGHTERS | 550 | 15,7955 |
| Ward 8 | 2 016 | AFRICAN NATIONAL CONGRESS | 2 667 | 77,2819 |
| Ward 8 | 2 016 | ECONOMIC FREEDOM FIGHTERS | 600 | 17,3863 |
| Ward 9 | 2 016 | AFRICAN NATIONAL CONGRESS | 3 171 | 79,4538 |
| Ward 9 | 2 016 | ECONOMIC FREEDOM FIGHTERS | 384 | 9,6216 |
| Ward 10 | 2 016 | AFRICAN NATIONAL CONGRESS | 2 601 | 59,8069 |
| Ward 10 | 2 016 | INDEPENDENTS | 779 | 17,9122 |
| Ward 11 | 2 016 | AFRICAN NATIONAL CONGRESS | 2 469 | 63,0812 |
| Ward 11 | 2 016 | ECONOMIC FREEDOM FIGHTERS | 748 | 19,1109 |
| Ward 12 | 2 016 | AFRICAN NATIONAL CONGRESS | 2 450 | 57,8649 |
| Ward 12 | 2 016 | ECONOMIC FREEDOM FIGHTERS | 1 154 | 27,2556 |
| Ward 13 | 2 016 | AFRICAN NATIONAL CONGRESS | 3 416 | 67,9395 |
| Ward 13 | 2 016 | ECONOMIC FREEDOM FIGHTERS | 1 345 | 26,7502 |
| Ward 14 | 2 016 | AFRICAN NATIONAL CONGRESS | 3 477 | 70,4417 |
| Ward 14 | 2 016 | ECONOMIC FREEDOM FIGHTERS | 861 | 17,4433 |
| Ward 15 | 2 016 | AFRICAN NATIONAL CONGRESS | 2 632 | 74,5398 |
| Ward 15 | 2 016 | ECONOMIC FREEDOM FIGHTERS | 487 | 13,7921 |
| Ward 16 | 2 016 | AFRICAN NATIONAL CONGRESS | 1 329 | 43,9921 |
| Ward 16 | 2 016 | ECONOMIC FREEDOM FIGHTERS | 750 | 24,8262 |
| Ward 17 | 2 016 | AFRICAN NATIONAL CONGRESS | 2 866 | 63,4632 |
| Ward 17 | 2 016 | ECONOMIC FREEDOM FIGHTERS | 784 | 17,3605 |
| Ward 18 | 2 016 | AFRICAN NATIONAL CONGRESS | 3 427 | 71,6496 |
| Ward 18 | 2 016 | ECONOMIC FREEDOM FIGHTERS | 1 000 | 20,9074 |
| Ward 19 | 2 016 | AFRICAN NATIONAL CONGRESS | 3 283 | 75,0057 |
| Ward 19 | 2 016 | ECONOMIC FREEDOM FIGHTERS | 736 | 16,8152 |
| Ward 20 | 2 016 | AFRICAN NATIONAL CONGRESS | 3 100 | 73,0615 |
| Ward 20 | 2 016 | ECONOMIC FREEDOM FIGHTERS | 907 | 21,3764 |
| Ward 21 | 2 016 | AFRICAN NATIONAL CONGRESS | 2 756 | 73,7293 |
| Ward 21 | 2 016 | ECONOMIC FREEDOM FIGHTERS | 803 | 21,4821 |
| Ward 22 | 2 016 | AFRICAN NATIONAL CONGRESS | 2 337 | 63,4021 |
| Ward 22 | 2 016 | ECONOMIC FREEDOM FIGHTERS | 595 | 16,1422 |
| Ward 23 | 2 016 | AFRICAN NATIONAL CONGRESS | 3 145 | 63,8449 |
| Ward 23 | 2 016 | ECONOMIC FREEDOM FIGHTERS | 1 340 | 27,2026 |
| Ward 24 | 2 016 | AFRICAN NATIONAL CONGRESS | 2 244 | 53,8646 |
| Ward 24 | 2 016 | ECONOMIC FREEDOM FIGHTERS | 1 657 | 39,7744 |
| Ward 25 | 2 016 | AFRICAN NATIONAL CONGRESS | 3 255 | 69,9248 |
| Ward 25 | 2 016 | ECONOMIC FREEDOM FIGHTERS | 1 045 | 22,449 |
| Ward 26 | 2 016 | AFRICAN NATIONAL CONGRESS | 2 620 | 57,2302 |
| Ward 26 | 2 016 | ECONOMIC FREEDOM FIGHTERS | 1 207 | 26,3652 |
| Ward 27 | 2 016 | AFRICAN NATIONAL CONGRESS | 2 163 | 54,5523 |
| Ward 27 | 2 016 | ECONOMIC FREEDOM FIGHTERS | 1 081 | 27,2636 |
| Ward 28 | 2 016 | AFRICAN NATIONAL CONGRESS | 2 568 | 55,321 |
| Ward 28 | 2 016 | ECONOMIC FREEDOM FIGHTERS | 970 | 20,8962 |
| Ward 29 | 2 016 | AFRICAN NATIONAL CONGRESS | 3 546 | 70,2039 |
| Ward 29 | 2 016 | ECONOMIC FREEDOM FIGHTERS | 984 | 19,4813 |
| Ward 30 | 2 016 | AFRICAN NATIONAL CONGRESS | 3 752 | 72,9961 |
| Ward 30 | 2 016 | ECONOMIC FREEDOM FIGHTERS | 1 042 | 20,2724 |
| Ward 31 | 2 016 | DEMOCRATIC ALLIANCE | 2 942 | 52,5451 |
| Ward 31 | 2 016 | AFRICAN NATIONAL CONGRESS | 1 180 | 21,0752 |
| Ward 32 | 2 016 | DEMOCRATIC ALLIANCE | 2 350 | 49,6199 |
| Ward 32 | 2 016 | VRYHEIDSFRONT PLUS | FREEDOM FRONT PLUS | 1 055 | 22,2762 |
The two largest published entries shown on each ward card. Open a ward for all entries.
Sources & result details
IEC: 06 Apr 2017, 11:46 SAST · checked 05 Nov 2026, 15:44 SAST
Historical comparisons use published area results. Boundaries may change between elections. Vote shares use the ballot labelled on each chart; ballots are not individual voters.
Vote percentages beside council seats combine ward and municipal PR ballots. Seat counts include both ward and PR councillors.
Seat calculation & source
These are the ward and PR seats published by the IEC. The totals add up to all 64 council seats. This is the historical election allocation, not a record of government changes during the term. Any grouped “Other” seats remain grouped.
IEC result time: 06 Apr 2017, 11:46 SAST · Source figures ↗
Ward vs PR ballots
Ward: choose a person. PR: choose a party.
The candidate with the most votes in the whole ward wins one seat. They do not need more than 50%.
PR means proportional representation. Party-list seats balance the council’s overall party representation.
Party ward votes and municipal PR votes both count towards the party’s overall seat allocation.
Outside metros, voters also have a separate district PR ballot. An independent can stand in a ward but not on a party PR list.
IEC guide to council seatsThe council results cover all of Mogalakwena. Ward results include areas outside Matsitsileng.
This page uses the Stats SA statistical main-place boundary labelled 2016. It overlaps 1 of the 2026 wards; the everyday town boundary may differ.
Town-to-ward mappings are available for 2026 only. The historical wards above belong to the whole municipality in 2016.
Positive-area intersections of the full-precision 2016 Stats SA main-place polygon and the MDB 2026 ward polygons. Display simplification is applied separately. Full-ward figures include votes outside the place; votes are never allocated by overlap area. Small boundary alignment differences were excluded using a 10-metre precision tolerance, a combined foreign area below 0.01% of the place, and agreement with the source municipality.