Below is code to produce highly accurate seconds by using software as an adjustment as opposed to variable capacitor. No 32Khz Xtal needed only 4Mhz processor Xtal.
0004 190B btfsc 0xB,0x2 ; See if Timer0 overflow interrupt
0005 2B00 goto 0x300 ; If True call Timer ISR
0006 0009 retfie ; If False ignore
0300 0A91 incf 0x11 ; rolling count register
0301 0092 movwf 0x12 ; Store accumulator
0302 3021 movlw 0x21 ; Primary fine tune software adjust
0303 0211 subwf 0x11,W ; When to jam load Secondary fine tune
0304 1903 btfsc 0x3,0x2 ; value
0305 2B0B goto 0x30B
0306 0A90 incf 0x10 ; TMR0 overflow interrupt count
0307 3002 movlw 0x2 ; Set TMR0 value 1/244 of second
0308 0081 movwf 0x1 ; Jam load TMR0 counter
0309 0000 nop
030A 2B10 goto 0x310 ; jump to maintenance seconds and minutes
030B 3000 movlw 0x0 ; re-initialize
030C 0091 movwf 0x11 ; rolling count register
030D 0A90 incf 0x10 ; continue TMR0 interrupt count
030E 3005 movlw 0x5 ; Jam load secondary fine tune
030F 0081 movwf 0x1 ; into TMRO count register
0310 2320 call 0x320 ; Min. and sec. subroutine
0311 0812 movf 0x12,W ; Restore accumulator
0312 110B bcf 0xB,0x2 ; Clear TMR0 interrupt flag
0313 168B bsf 0xB,0x5 ; Re-enable TMP0 interrupt
0314 0009 retfie ; Return from interrupt
0320 30F9 movlw 0xF9 ; F9h -2 = 247 (of second 244th secs correction)
0321 0210 subwf 0x10,W ; interrupt tics
0322 1D03 btfss 0x3,0x2 ; test zero flag
0323 2B2F goto 0x32F ; if not whole second get out
0324 3000 movlw 0x0 ; reset interrupt counts
0325 0090 movwf 0x10 ; place to count reg.
0326 0AAE incf 0x2E ; increment seconds
0327 0AAF incf 0x2F ; seconds shadow register can be modified by main
0328 303B movlw 0x3B ; 3Bh = 59(0 to 59 or 60 seconds)
0329 022E subwf 0x2E,W
032A 1D03 btfss 0x3,0x2 ; test if one full minute
032B 2B2F goto 0x32F
032C 3000 movlw 0x0 ; reset seconds
032D 00AE movwf 0x2E
032E 0AC3 incf 0x43 ; increment minutes
032F 0008 return
0004 190B btfsc 0xB,0x2 ; See if Timer0 overflow interrupt
0005 2B00 goto 0x300 ; If True call Timer ISR
0006 0009 retfie ; If False ignore
0300 0A91 incf 0x11 ; rolling count register
0301 0092 movwf 0x12 ; Store accumulator
0302 3021 movlw 0x21 ; Primary fine tune software adjust
0303 0211 subwf 0x11,W ; When to jam load Secondary fine tune
0304 1903 btfsc 0x3,0x2 ; value
0305 2B0B goto 0x30B
0306 0A90 incf 0x10 ; TMR0 overflow interrupt count
0307 3002 movlw 0x2 ; Set TMR0 value 1/244 of second
0308 0081 movwf 0x1 ; Jam load TMR0 counter
0309 0000 nop
030A 2B10 goto 0x310 ; jump to maintenance seconds and minutes
030B 3000 movlw 0x0 ; re-initialize
030C 0091 movwf 0x11 ; rolling count register
030D 0A90 incf 0x10 ; continue TMR0 interrupt count
030E 3005 movlw 0x5 ; Jam load secondary fine tune
030F 0081 movwf 0x1 ; into TMRO count register
0310 2320 call 0x320 ; Min. and sec. subroutine
0311 0812 movf 0x12,W ; Restore accumulator
0312 110B bcf 0xB,0x2 ; Clear TMR0 interrupt flag
0313 168B bsf 0xB,0x5 ; Re-enable TMP0 interrupt
0314 0009 retfie ; Return from interrupt
0320 30F9 movlw 0xF9 ; F9h -2 = 247 (of second 244th secs correction)
0321 0210 subwf 0x10,W ; interrupt tics
0322 1D03 btfss 0x3,0x2 ; test zero flag
0323 2B2F goto 0x32F ; if not whole second get out
0324 3000 movlw 0x0 ; reset interrupt counts
0325 0090 movwf 0x10 ; place to count reg.
0326 0AAE incf 0x2E ; increment seconds
0327 0AAF incf 0x2F ; seconds shadow register can be modified by main
0328 303B movlw 0x3B ; 3Bh = 59(0 to 59 or 60 seconds)
0329 022E subwf 0x2E,W
032A 1D03 btfss 0x3,0x2 ; test if one full minute
032B 2B2F goto 0x32F
032C 3000 movlw 0x0 ; reset seconds
032D 00AE movwf 0x2E
032E 0AC3 incf 0x43 ; increment minutes
032F 0008 return