Hello,

I am having difficulties troubleshooting this problem. I have a countdown timer and when it comes to 59:51 the next number it turns to is 59:44:
the calculations is good , I did a simulation in excel and the formula does work, what the heck is the problem:
I am using the DS 1337 and pic16F887

Code:
OSCCON = %01110000 '8 Mhz
DEFINE OSC 8
ANSELH = 0

'///////////////////////////
'// Interrupt section //
'///////////////////////////


'/////////////////////////
'// LCD configuration //
'/////////////////////////

DEFINE LCD_DREG PORTB 	' Set LCD Data port
DEFINE LCD_DBIT 4 		' Set starting Data bit (0 or 4) if 4-bit bus  RB.4, RB.5, RB.6, RB.7
DEFINE LCD_RSREG PORTB 	' Set LCD Register Select port
DEFINE LCD_RSBIT 1 		' Set LCD Register Select bit
DEFINE LCD_EREG PORTB	' Set LCD Enable port
DEFINE LCD_EBIT 0 		' Set LCD Enable bit
DEFINE LCD_BITS 4 		' Set LCD bus size (4 or 8 bits) '4 therefore put wire at 4, 5, 6 and 7 of LCD
DEFINE LCD_LINES 2 		' Set number of lines on LCD
DEFINE LCD_COMMANDUS 2500
DEFINE LCD_DATAUS 250
DEFINE CHAR_PACING 2000
pause 1000

'/////////////////////////
'// PIN configuration //
'/////////////////////////

TRISB = %00000000 ' Set PORTB to all output
TRISA = %11111111 ' Set PORTA to all input
TRISC = %11000000 ' Set PORTC to all output


'///////////////////////////////////////////////
'// Variable Declaration and initialization //
'///////////////////////////////////////////////

SDApin var PORTC.4                     ' RTC data 
SCLpin var PORTC.3                     ' RTC clock

Total_time var word
RTCSec var byte :RTCMin var byte :RTCHour var byte :RTCWDay var byte :RTCDay var byte :RTCMonth var byte :RTCYear var byte :RTCCtrl var byte 

lcdout $FE,1, "Bienvenue"
lcdout $FE,$C0, "Welcome" 
pause 1000

'////////////////////////////////////////////////////
'////////////////// PROGRAM /////////////////////////
'////////////////////////////////////////////////////

Mainloop:
		if PORTC.6 =0 then 
		Gosub CountDown
				lcdout $FE,1, "Out of Countdown"
				lcdout $FE,$C0, " Press C.6 to Start "
				Pause 150
		Endif
		
goto Mainloop
End

CountDown:
I2CWRITE SDApin,SCLpin,$D0,$00,[$00,$00,$00,$00,$00,$00,$00,$00] ' Write to DS1307 to start counter at ZERO
Pause 20
	while RTCHour != 1

			I2CRead SDApin,SCLpin,$D0,$00,[RTCSec,RTCMin,RTCHour,RTCWDay,RTCDay,RTCMonth,RTCYear,RTCCtrl]  
			Pause 20
				'Will get the time from timer chip and do a 60 min count down
				'Also add interrupt if someone presses start to view the charge/discharge cycle
				 Total_time = (RTCMin * 60) + RTCSec
				 Total_time = 3600 - Total_time
				lcdout $FE,1, "Time left"
				lcdout $FE,$C0, " Diff: ", dec2 RTCHour, ":", dec2 Total_time/60 ,":", dec2 Total_time//60
				Pause 150
	Wend
return