Race leader Primoz Roglic extended his overall lead after winning the fourth stage of the Tour of Romandie on Saturday as the day's racing was cut by 70km due to wintry weather.
Jumbo-Visma's Roglic opened up a late sprint with less than a kilometre to go in Torgon to stretch his lead to 12 seconds ahead of Rui Costa.
"I had been beaten the past two days so I told myself why not win today, and that's what I did," the Slovenian said.
Tour de France winner Geraint Thomas, racing with Team Ineos for the first time, moved up to fourth overall with a third place finish on a stage slowed down by heavy rain in the Swiss Alps.
Race organisers decided to cut the length of the penultimate day's racing from 176km due to the temperature of minus 2 degrees Celsius (28 degrees Fahrenheit) and forecasted winds and snow showers at the Col de Mosses peak.
Sunday's final stage is a 16.85km time-trial in Geneva which includes 700 metres of television black-out through the tunnel of Vesennaz in the city.
Results from Saturday's fourth stage of the Tour de Romandie over 107.6km from Luzern to Torgon:
1. Primoz Roglic (SLO/JUM) 2hr 42min 21 sec 2. Rui Costa (POR/UAE) same time 3. Geraint Thomas (GBR/INE) s,t 4. Michael Woods (CAN/EF1) s,t 5. David Gaudu (FRA/FDJ) s,t 6. Felix Grossschartner (AUT/BOH) s,t 7. Jan Hirt (CZE/AST) s,t 8. Emanuel Buchmann (GER/BOH) s,t 9. Steven Kruijswijk (NED/JUM) s,t 10. Ilnur Zakarin (RUS/KAT) s,t
1. Primoz Roglic (SLO/JUM) 15hr 5min 13sec 2. Rui Costa (POR/UAE) at 12sec 3. David Gaudu (FRA/FDJ) 16, 4. Geraint Thomas (GBR/INE) 26, 5. Felix Grossschartner (AUT/BOH) 29, 6. Steven Kruijswijk (NED/JUM) 37, 7. Michael Woods (CAN/EF1) 38, 8. Emanuel Buchmann (GER/BOH) 39, 9. Carlos Bentacur (COL/MOV) 57, 10. Simon Spalik (SLO/KAT) 1min