Hobart: New Zealand opener Tom Latham and Kane Williamson extended the hosts' lead over Sri Lanka in the first test to 308 runs on Saturday as they reached 171/1 at stump on the third day in Dunedin on Saturday.
Kane Williamson joined the elite 1,000 runs-a-year club.
Only the threat of rain and a flattening pitch loomed as possible barricades for New Zealand, who closed day three on 171 for one with nine wickets in hand.
Tom Latham was on 72 with master batsman Williamson on 48.
Williamson, who started his innings with 992 runs for the year, reached 1,000 driving Rangana Herath elegantly over mid-off to the boundary.
He joins England's Alastair Cook and Joe Root and Australians David Warner and Steve Smith as the only players to achieve the milestone in 2015 but his batting average of 94.54 is considerably superior to the other four.
Brendon McCullum, with 1,164 runs last year, is the only other New Zealander to score 1,000 runs in a calendar year.
Williamson's class shone as New Zealand ramped up their dominance over Sri Lanka, removing their last six wickets on Saturday to have the tourists all out for 294, 137 runs in arrears.
Guptill and Latham set about building on New Zealand's advantage, moving swiftly to 79 before Guptill's luck ran out when he was bowled by a shooter from Rangana Herath for 46.
The first-innings century-maker had earlier survived caught and bowled chances to Nuwan Pradeep and Suranga Lakmal and being dropped on 19 by Kusal Mendis at cover.
Latham, who posted his seventh Test 50 with a single off Milinda Siriwardana, has been content to build partnerships first with Guptill then an unbroken 92-run stand with Williamson.
Earlier, Sri Lanka suffered a setback at the start of the day when they resumed their first innings at 197-4 and lost batting general Dinesh Chandimal with the first ball he faced.
The Sri Lankans had expected Chandimal to lead them within close range of New Zealand's 431, instead he was unable to add to his overnight 83 as he fell to Tim Southee.
Southee struck again in his next over when he had Kithuruwan Vithanage caught behind for 22.
Milinda Siriwardana and Herath emerged from the setback to produce a stubborn 43-run stand for the seventh wicket.
The 30-year-old Siriwardana, who only made his Test debut two months ago, had a reprieve on 29 when he was caught by a leaping Doug Bracewell on the long-leg boundary.
The apparent dismissal turned into a six when Bracewell fell backwards over the boundary rope.
However, Siriwardana was not to score again as four balls later he edged Neil Wagner to Ross Taylor at first slip.
For New Zealand, Southee took three for 71 and Wagner three for 87.
Brief scores
New Zealand - 431 (Guptill 156, Williamson 88, McCullum 75, Pradeep 4-112) and 171 for 1 (Latham 72*)
Sri Lanka - 294 (Karunaratne 84, Chandimal 83)
Status - New Zealand lead by 308 runs