Puedes emularlo en MPLAB?
A mi me fue muy util, ya que recargaba el timer con un valor muy bajo, y solo con las instrucciones de la interrupcion lo volvia a revalsar, a veces, ya que el codigo tambien se superponia con otra interrupcion mas, lo pude depurar poniendo el medidor de ejecuciones del MPLAB en cero, largando la ejecucion del programa desde el momento de la recarga y haciendo stop en el mismo lugar.
Eso te permite depurar la cantidad de microsegundos exactos que transcurren entre recargas, y que exponencialmente se convertiran luego en segundos, minutos, etc.
Como tu interrupcion testea si debe acumular en los segundos o en minutos, tal vez alli esta el KID de la cuestion, ya que no es la misma cantidad de codigo entre llamados, porque no en todos agregas segundos y menos aun minutos.
Como esas son acciones que si o si debes hacerlas alli, me parece que no debes sacarlas, sino corroborar si la atencion a un llamado cuando debe incrementar segundos y luego minutos no sobrepasa el tiempo de ejecucion de la interrupcion.
Recuerda que la interrupcion pudo haberse producido antes de llegar al RETFIE, y recien luego de eso vuelve a estar activa, tal vez se "coma" alguna sin querer....
Puff !! me canse de escribir...
Espero no haberte aburrido..je..je..