French voters were picking a new parliament Sunday in a run-off ballot, with centrist President Emmanuel Macron's coalition seeking to maintain its majority in the face of a challenge from a newly formed left-wing alliance.
At almost 19 percent by midday according to interior ministry figures, turnout was slightly higher than in last week's first-round ballot, although forecasters suggest participation will remain below 50 percent by the time all polling stations close at 8:00 pm (1800 GMT).
The vote will be decisive for Macron's second-term agenda following his re-election in April, with the 44-year-old needing a majority to secure promised tax cuts and welfare reform and raise the retirement age.
Projections from polling firms suggest his "Together" coalition is on course to be the biggest party in the next National Assembly, but possibly short of the 289 seats needed for a majority.
New left-wing coalition NUPES is hoping to spring a surprise, with the red-green collective promising to block Macron's agenda after uniting behind 70-year-old figurehead Jean-Luc Melenchon.
Falling short of the majority would force Macron into tricky alliances with other parties on the right to force through legislation.
The nightmare scenario for the president -- seen as unlikely although not theoretically impossible -- would be the left winning a majority and Melenchon heading the government.
"The vote is extremely open and it would be improper to say that things are settled one way or the other," Melenchon told reporters Friday during a final campaign stop in Paris.
- Political mudslinging -
Macron was left disappointed last weekend after the first round placed Together and NUPES neck-and-neck at around 26 percent.
The first-round vote served to whittle down candidates in most of the country's 577 constituencies to two finalists who are going head-to-head Sunday.
Far-right leader Marine Le Pen is also eyeing major gains for her National Rally party, which had just eight seats in the outgoing parliament.
The election caps an intense two-month sequence to elect a new president and parliament, with voter fatigue seen as one of the reasons for what is expected to be record-low turnout Sunday.
Macron cast his ballot in northern seaside town Le Touquet alongside his wife Brigitte, while Melenchon voted in Mediterranean port city of Marseille.
The contest between Together and NUPES has turned increasingly bitter over the last week, with Macron's allies seeking to paint their main opponents as dangerous far-leftists.
Senior MP Christophe Castaner has accused Melenchon of wanting a "Soviet revolution", while Economy Minister Bruno Le Maire called him a "French (Hugo) Chavez" after the late Venezuelan autocrat.
The political mudslinging has put off some voters.
"Between the two rounds, I've found it really disappointing how some people have said unspeakable things about their opponents," said 67-year-old Marie-Noelle at a polling station in Lyon.
Macron headed to Ukraine last week, hoping to remind voters of his foreign policy credentials and one of Melenchon's perceived weaknesses -- his anti-NATO and anti-EU views at a time of war in Europe.
As president, he would retain control of foreign and defence policy whatever the outcome, but his domestic agenda would be thwarted if his party lost control of parliament.
- Turnout key -
Melenchon has promised a break from "30 years of neo-liberalism" -- meaning free-market capitalism -- and has pledged minimum wage and public spending hikes, as well as nationalisations.
It has been 20 years since France last had a president and prime minister from different parties, when right-winger Jacques Chirac had to work with a Socialist-dominated parliament under premier Lionel Jospin.
A final flurry of polls Friday suggested Macron's Together allies were on track for 255-305 seats Sunday, with only the upper end of that range being a majority of more than 289.
Observers will be keeping a close eye on turnout figures following a historically low level last week of just 47.5 percent.
A higher-than-expected turnout would most likely favour NUPES, which is banking on young people and the working classes voting.
In France's Caribbean island of Guadeloupe -- where the poll is held a day early -- Justine Benin was defeated by NUPES candidate Christian Baptiste Saturday, a loss that jeopardises her role in the government as Secretary of State for the Sea.
In mainland France Europe Minister Clement Beaune and Environment Minister Amelie de Montchalin are facing tough challenges in their constituencies, with both likely to exit government if defeated.