This appears to be working correctly. Are there any problems going this route?
Of course this isn't all the code, just the part that is relevant.
Code:
DEFINE INTHAND Direction 

ASM
Direction
ENDASM
  If PIR1.2 = 1 then
    goto RPMASM
  endif
  
  If PIR2.1 = 1 then
    goto ClockCount
  endif
return  

RPMASM: 
ASM
CCP_INT
  BTFSS CCP1CON,0      ; capture from rising edge?
  BRA Fall             ; no .. goto falling edge
  MOVFF CCPR1L, TS    ; get low capture byte into T1
  MOVFF CCPR1H, TS+1   ; get high capture byte into T1
  BRA IntExit          ; outta here
Fall
  MOVFF CCPR1L, PW     ; get low capture byte into PW
  MOVFF CCPR1H, PW+1   ; get high capture byte into PW
  BSF CF,0             ; indicate last capture
IntExit
  BTG CCP1CON,0        ; toggle between rising/falling edge captures
  BCF PIR1,2           ; clear capture interrupt flag bit
  RETFIE FAST          ; return/restore W, STATUS and BSR
ENDASM

ClockCount:   ' Note: this is being handled as an ASM interrupt
@ INT_START
@ RELOAD_TIMER                    ; Reload TIMER1
  R0save = R0                     ; Save 2 PBP system vars that are used during
  R1save = R1                     ; the interrupt
  R4save = R4
    Ticks = Ticks + 1
    if Ticks = 1000 then
       Ticks = Ticks-1000
       Seconds = Seconds + 1
       SecondsChanged = 1
       if Seconds = 60 then
          Minutes = Minutes + 1
          MinutesChanged = 1
          Seconds = 0
       endif
       if Minutes = 60 then
          Hours = Hours + 1
          HoursChanged = 1
          Minutes = 0
       endif
       if Hours = 24 then
          Days = Days + 1
          DaysChanged = 1
          Hours = 0
       endif
    endif
  R4 = R4save                     ; Restore the PBP system vars
  R1 = R1save
  R0 = R0save
@ INT_RETURN                      ; Restore context and return from interrupt