Forgive my ignorance but I can not see why during the timekeep loop that the minutes increment to 01 if they are set to 00 from the previous loop

Code:
timekeep:							
ss = ss + 1							
if ss = 60 then
	ss = 0 
 	mm = mm + 1
endif
if mm = 60 then 
	mm = 0
	hh = hh + 1
endif
if hh = 13 then hh = 1				
v1 = hh DIG 1
v2 = hh DIG 0

v3 = mm DIG 1
v4 = mm DIG 0

if hh < 10 then
lookup v1, [$00,$60,$57,$76,$6C,$3E,$3F,$70,$7F,$7E], v1
else
lookup v1, [$7B,$60,$57,$76,$6C,$3E,$3F,$70,$7F,$7E], v1
endif

lookup v2, [$7B,$60,$57,$76,$6C,$3E,$3F,$70,$7F,$7E], v2
lookup v3, [$7B,$60,$57,$76,$6C,$3E,$3F,$70,$7F,$7E], v3
lookup v4, [$7B,$60,$57,$76,$6C,$3E,$3F,$70,$7F,$7E], v4

shiftout dat, clk, 0, [v2, v1]
pulsout hstro, 10
shiftout dat, clk, 0, [v4, v3]
pulsout mstro, 10

INTCON.2 = 0						'Clear interrupt flag
resume startloop					'Go back to the do nothing loop
Looking at this statement

Code:
ss = ss + 1							
if ss = 60 then
	ss = 0 
 	mm = mm + 1
endif
The minutes should be at 00 until 60 seconds have been counted. Why is it jumping to 01 instead?