But poor weather halted what was a fabulous rally and eventually helped claim the scalp of the skipper, Daniel Vettori.
New Zealand resumed day two of its test against Pakistan at 276 for six and reached 404 for eight at stumps at the University Oval in Dunedin.
Vettori joined McCullum at the crease with the innings teetering at 211 for six and the pair added 164 for the seventh wicket.
The weather intervened shortly after the resumption yesterday but, remarkably, play was possible more than three and a-half hours later.
Vettori and Shane Bond trudged out in gloomy conditions.
The captain needed a further 13 runs to reach his fifth test 100, having already created history by scoring more runs than any other No 8 test batsman.
But Vettori's valiant vigil came to an end on 99 when he edged Umar Gul to the keeper in fading light.
To rub salt into the wound, poor light stopped play two deliveries later.
More than 50 overs were lost in the day's play and it took the gloss off what was New Zealand's day.
"It is disappointing but I thought we did really well to get into the position we are in," McCullum said.
"You can't do much with what happens overhead but there is still three days to go in the game and we've got a good, sizeable first-innings total. If we bowl well then hopefully we'll give ourselves a real opportunity."
McCullum fancied his skipper might declare the innings this morning.
"I guess it sort of depends on what is happening overhead but I think the situation we are in at the moment is pretty good. We probably don't want to waste too much time."
McCullum added 78 in his partnership with Vettori and would have liked to have gone on and scored a century on his home track.
But Gul intervened with a deadly yorker to send McCullum packing and break a partnership which was threatening to overhaul New Zealand's seventh-wicket record partnership against Pakistan of 186, set by Sir Richard Hadlee and Warren Lees in Karachi in October, 1976.
"I thought we were in a dicey situation at 211 for six. To be able to combine and get our team through is something that we aim for and to do that was very satisfying."
Earlier, Pakistan by and large bowled good lengths on the opening day but reverted to type with two of the three Mohammads - Asif and Aamer - launching an assault on the New Zealand pair of Vettori and McCullum, peppering them with bouncers.
The tactic might have been more successful had the field settings been more attacking.
But despite the onslaught the third Mohammad - Yousuf - stuck to a stock standard field of two slips and a gully.
There was no-one in close under the helmet to help create extra pressure.
Still, the strategy certainly rattled the Black Caps.
Asif struck Vettori twice in one over and Aamer hit McCullum on the helmet.
The batsman needed a moment to compose himself before resuming.
When the speedsters eventually ran out of puff the Pakistan attack quickly appeared to run out of ideas.
The tourists went into the match with three seamers and one spinner and had no option but to plug away, without luck.
Vettori brought up his 21st test 50 with a late cut and celebrated by helping another short delivery over gully and down to the third man boundary.
It was more of a flick than an uppercut and effective rather than a thing of beauty.
But then that sums up Vettori's batting.
Not to be outdone, McCullum pulverised a cut shot through point to bring up his 50 and the pair posted 99 runs in the opening session.
Rain interrupted the game shortly after the break.
But in the 15min of play available, Vettori overtook Shane Warne as the most prolific No 8 test batsman.
The unorthodox left-hander has now scored 2018 runs in the position at an average of 43.86.
Warne scored 2005 runs at 19.09.
Play will resume at the earlier time of 11.30am and a minimum of 98 overs are to be bowled.
Leading scorers
No 8 batsmen
- Daniel Vettori (NZ) 2018 runs in 57 innings at 43.86
- Shane Warne (AUS) 2006 runs in 113 innings at 19.09
- Chaminda Vaas (SL) 1913 runs in 98 innings at 25.17
- Shaun Pollock (SA) 1796 runs in 79 innings at 30.96
- Kapil Dev (India) 1777 runs in 58 innings at 33.52