The SNP have held their seat in the Fife local by-election.

The party beat Labour to retain the seat at Fife (Leven, Kennoway & Largo) following the resignation of a Scottish Nationalist councillor.

Early claims on social media of a collapse in the Labour vote were incorrect. First-preference voting was: SNP 1,501, Lab 1,155, C 752, LD 580, Green 74.

Meanwhile, the Conservatives lost four council seats - three to Liberal Democrats and one to an independent - in local by-elections in England.

The Lib Dems were jubilant at their gains, coming after their recent victory in the Commons by-election at Richmond Park and an unbroken string of council by-election wins since May.

The party saw big increases in its vote share in the latest polls.

Voting in the contest at Taunton Deane (Blackdown ward) following the resignation of a Conservative councillor was: LD 440, C 164, Ind 39.

The swing from the Tories to the Lib Dems was a massive 37.3%. Turnout was 35.6%.

The other Lib Dem gains were at Teignbridge in two by-elections following the deaths of Tory councillors.

Voting in Bovey ward was: LD 838, C 631, Ind Kelly 169, Lab 103, Ukip 98, Ind West 68. Turnout 29.3%.

Voting in Chudleigh ward was: LD 680, C 470, Ukip 89, Lab 81. Turnout 26.5%.

The Conservative defeat at the hands of an independent candidate came at St Edmundsbury (Moreton Hall) in a by-election caused by the resignation of a Conservative councillor.

Voting was: Ind 550, C 213, LD 102, Lab 71, Ukip 47.

Elsewhere, Labour comfortably held a seat at Blackburn with Darwen (Higher Croft).

In Wales, an independent won a seat at Powys (Welshpool Llanerchyddol) in a contest following the death of an independent councillor.

Voting was: Ind 323, LD 212, C 126.