Democratic Unionist Party 38 seats (no change) 202,567 first prefs 29.2% (-0.8%)
Sinn Féin 28 seats (−1) 166,785 first prefs 24.0% (−2.9%)
Ulster Unionist Party 16 seats (-) 87,302 first prefs 12.6% (−0.7%)
SDLP 12 seats (−2) 83,364 first prefs 12.0% (−2.2%)
Alliance Party 8 seats (-) 48,447 first prefs 7.0% (−0.7%)
Green 2 seats (+1) 18,718 first prefs 2.7% (+1.8%)
People before Profit Alliance 2 seats (+2) 13,761 first prefs 2.0% (+1.2%)
Traditional Unionist Voice 1 seat (-) 23,776 first prefs 3.4% (+0.9%)
Independent 1 seat (-) 22,650 first prefs 3.3% (+0.9%)
UKIP 0 seats 10,109 first prefs 1.5% (+0.8%)
Progressive Unionist Party 0 seats 5,955 first prefs 0.9% (+0.6%)
Conservative 0 seats 2,554 first prefs 0.4% (+0.4%)
NI Labour Representation Committee 0 seats 1,577 first prefs 0.2% (+0.2%)
Others 0 seats 6,745 first prefs 1.0% (+0.8%)
Here's a statement that I did not believe I would be typing before the votes were cast, or indeed this time yesterday when the first preference votes had become clear: the number of seats held by the Unionist parties did not change at all. The DUP took a UUP seat in South Belfast; the UUP took a DUP seat in neighbouring Lagan Valley. Otherwise, that was it, apart from some shifting of personnel. I think it's fair to say that this was unexpected. On the basis of the Westminster and local elections, I (and many others) had expected the DUP vote to be vulnerable to the fringe Unionists - TUV, PUP, UKIP - and to the UUP. Basically, it didn't happen; Jim Allister kept his seat and that was it. Turnout was up in Unionist constituencies, but not necessarily for Unionist parties.
On the Nationalist side, the thesis of the demographic determinists ("we'll outbreed yez!") must now be in disarray. The Nationalist vote decreased for the fourth electorasl cycle in a row; the combined SF and SDLP vote fell by over 5%. Both SF and the SDLP lost seats to the People Before Profit Alliance in Foyle and West Belfast; the SDLP also lost a seat to the Greens in South Belfast; the SDLP regained the seat they should not have lost last time from SF in Fermanagh and South Tyrone, but lost to them in Upper Bann. The new Assembly will have only 40 members from Nationalist parties, the fewest since the 1998 Good Friday Agreement.
In between, Alliance had something of a damp squib, holding their own (with tight squeezes for eg the party leader in South Antrim); but the Greens surged to take a South Belfast seat and hold North Down. The PBPA success demonstrated that voters in Nationalist areas are not always concerned about voting for Nationalist candidates - or indeed about voting; turnout was down in all Nationalist-majority seats. And it was nice to see Claire Sugden, thrust into public life at a relatively young age, making a successful defence in East Londonderry with no party infrastructure behind her.
And overall, the lack of change among the headline figures masks a shift towards the younger generation and to a more diverse Assembly. If I have counted correctly,
In terms of the make-up of the next Executive, Alan Meban has crunched the D'Hondt numbers, coming to the same conclusion as my back-of-the-envelope calculations in the studio yesterday. (Let me also recommend my local garage and roofer/plumber.)
West Tyrone: Declan McAleer (SF) beat Grace McDermott (also SF) by 20.92
West Belfast: Alex Attwood (SDLP) beat Frank McCoubrey (DUP) by 88.99
East Antrim: Oliver McMullan (SF) beat Noel Jordan (UKIP) by 104.7
Mid Ulster: Keith Buchanan (DUP) beat Ian McCrea (also DUP) by 160.62
Lagan Valley: Brenda Hale (DUP) beat Jonathan Craig (also DUP) by 168
Upper Bann: John O'Dowd (SF) beat Dolores Kelly (SDLP) by 168
South Antrim: Trevor Clarke (DUP) beat Paul Michael (UUP) by 211
On my way to Belfast City airport after hours of non-stop commentary, I bumped into a UUP friend, who expressed their regret that UKIP had gained a seat in East Antrim. "Actually, that didn't happen," I told them. "Your voters didn't transfer to UKIP in sufficient numbers, and Sinn Fein kept their seat." Their face lit up with glee. Every vote counts, and not always the way you would expect.