No he entendido eso de que sólo desborda en flanco de subida, ¿puedes explicarlo?

menos mal que has estado atento porque le he pifiado!, eso es cuando el clock es externo

...
Traducción del datasheet:
El modo temporizador se selecciona poniendo a cero el bit T0CS ( registro OPTION_REG <5>). En el modo temporizador, el módulo Timer0 se incremento en cada cielo de instrucción (sin el preescaler). Si el registro TMR0 se escribe, el incremento se inhibe durante los siguientes dos ciclos de instrucción. EL usuario puede trabajar teniendo en cuenta esto y ajustando el valor a cargar en el TMR0.
El modo contador se selecciona poniendo a uno el bit T0CS (registro OPTION_REG <5>). El modo contador, Timer0 se incremento en cada flaco de subida o de bajada de la señal que le llega por RA4/TOCK1. El flanco de incremento se determina por el bit T0SE (registro OPTION_REG <4>). Poniéndose a cero T0SE se selecciona el flanco ascendente. Las restricciones de la señal de reloj externa se describen en la sección 5.2.
Ahora esta es la cosa...
la interrupción se genera cuando:
The TMR0 interrupt is generated when the TMR0 register overflows from FFh to 00h.
y la interrupción se atiende cuando

(quiere?)

Entonces la interrupción se genera cuando el timer pasa de FF a 00 pero la rutina recien se atiende cuando TMR0 tiene un valor de 32

ahí esta la perdida de tiempo es casi del doble de lo que se necesita, creo que posiblemente sea un retardo de CCS

porque lo probe para varios valores de TMR0! y siempre tarda los 32 ticks del TMR0, perooo en donde se pierde o invierte este tiempo?.