So unfortunately it turns out that I was correct earlier tonight in suggesting that Labour's chances in the Coatbridge South by-election were being underestimated - they ended up pipping the SNP by just 0.4% of the vote on first preferences, which made it all but inevitable they'd win on a later count due to the greater propensity of Tory voters to transfer to Labour.
Coatbridge South by-election result:
Labour 41.5% (+12.0)
SNP 41.1% (-1.6)
Conservatives 15.1% (+3.2)
Greens 1.4% (n/a)
UKIP 0.4% (n/a)
Liberal Democrats 0.4% (n/a)
[UPDATE, Friday, 5pm: I've had to correct the above figures, because the original version of the result that appeared on Twitter last night turned out to be slightly inaccurate. It's amazing how often that happens.]
Technically this was a Labour hold rather than a gain, meaning that they won't have any more councillors in North Lanarkshire than they previously did. Nevertheless, on paper it appeared that the SNP should have won tonight, because they topped the popular vote in the ward quite comfortably in May 2017. This follows the same pattern as a few other by-elections in former Labour heartlands since the general election in which Labour have done significantly better than the national opinion polls would have led us to expect. So what is going on? Is there a localised Labour renaissance that the opinion polls aren't picking up? In this particular case there may be a more prosaic explanation. Although there was a technical swing from SNP to Labour, the SNP's own vote barely dropped at all. On the face of it, the big increase in Labour's vote may have come almost entirely from people who voted for independents in May 2017. And it just so happens that the independents were disgruntled former Labour councillors. Perhaps, then, the SNP victory in the ward eighteen months ago was a bit illusory, and the 'real' Labour vote was always significantly higher than the 2017 result suggested.
Of course it may well be a bit more complex than that, but I'd be surprised if that isn't at least part of the explanation. So let's not over-react to what is admittedly a very frustrating result.