Sean Williams followed his first-innings century with another valuable batting performance as Zimbabwe extended their lead over Sri Lanka to 354 after four days of the second Test in Harare.

Captain Williams made 107 batting first time around and on Thursday he weighed in with an unbeaten 47 as Zimbabwe reached 241-7 in their second innings.

On a rain-affected day, the home side advanced from an overnight 62-1 to build their healthy lead, which seems certain to be followed by an early declaration on day five.

Sri Lanka's victory in the opening match of the two-Test series puts the onus on Zimbabwe to go hard for the win, and they unmistakably have the platform, but their cause was not helped by the weather.

A large chunk of the afternoon session was lost due to rain, while bad light and further rain brought play to an early close too.

Brendan Taylor top-scored for Zimbabwe with a rapid 67 before he was pinned lbw by Lahiru Kumara, while opener Prince Masvaure contributed 35 and Sikandar Raza made 34, sharing in a 70-run partnership for the sixth wicket with Williams.