It was easier than I thought, just more of the same stuff.

<table><tr><td>
IdleState CON 0
</td><td>
IdleState CON 1
</td></tr></table>
Code:
'****************************************************************
'*  Name    : FREQx2.bas                                        *
'*  Author  : Darrel Taylor                                     *
'*  Date    : 3/1/2007                                          *
'*  Version : 2.0                                               *
'*  Notes   : Doubles the frequency of input pulses,            *
'*          : and maintains the same DutyCycle as the Input.    *
'*          : Range = .1hz to 500 hz  (0-40% DutyCyle)          *
'*          : Target = PIC12F629/675                            *
'****************************************************************
@  __config _INTRC_OSC_NOCLKOUT & _WDT_OFF & _MCLRE_OFF & _CP_OFF
DEFINE  NO_CLRWDT 1

Clear

SpeedPin   VAR GPIO.2                       ; Input from speed sensor
SpeedX2Pin VAR GPIO.4                       ; Output to Speedometer
IdleState  CON 0                            ; State of input when sensor
                                            ;    is not on a "Slot"
NotIdle    CON IdleState ^ 1
LastState  VAR BIT                          ; Last state the Input changed to
LoopCount  VAR byte                         ; Counts the loops of each pulse
LoopCount1 VAR byte
LoopCount2 VAR byte

PulseWidth  VAR byte  BANK0                 ; Counts the loops of output pulse
PulseWidth1 VAR byte  BANK0
PulseWidth2 VAR byte  BANK0

LastPulseWidth  VAR byte                    ; saved width of last pulse
LastPulseWidth1 VAR byte                    ;    so it can duplicate it
LastPulseWidth2 VAR byte

CycleWidth  VAR byte  BANK0                 ; Counts the loops of output cycle
CycleWidth1 VAR byte  BANK0
CycleWidth2 VAR byte  BANK0

OutPulseCount VAR BIT


CMCON = 7
'ANSEL = 0    ; for 12F675

SpeedX2Pin = IdleState
OUTPUT SpeedX2Pin

Main:
    LoopCount = LoopCount + 1               ; 24-bit counter
    If LoopCount = 0 Then
        LoopCount1 = LoopCount1 + 1         
        if LoopCount1 = 0 then
            LoopCount2 = LoopCount2 + 1
        endif
    endif
    IF SpeedPin <> LastState then           ; If Input State Changed?
        LastState = SpeedPin
        
        if LastState = NotIdle then         ; Start of Input Pulse
            CycleWidth  = LoopCount
            CycleWidth1 = LoopCount1
            CycleWidth2 = LoopCount2
            ASM
                bcf   STATUS,C              ; CycleWidth = LoopCount / 2
                rrf   _CycleWidth2, F       ; Output Cycle is half of Input
                rrf   _CycleWidth1, F
                rrf   _CycleWidth, F
            ENDASM
            LoopCount  = 0                  ; reset LoopCount
            LoopCount1 = 0
            LoopCount2 = 0
        else                                ; End of Input Pulse
            PulseWidth  = LoopCount
            PulseWidth1 = LoopCount1
            PulseWidth2 = LoopCount2
            ASM
                bcf   STATUS,C              ; PulseWidth = PulseWidth / 2
                rrf   _PulseWidth2, F       ; Output Pulse is half of Input
                rrf   _PulseWidth1, F
                rrf   _PulseWidth, F
            ENDASM
            LastPulseWidth = PulseWidth
            LastPulseWidth1 = PulseWidth1
            LastPulseWidth2 = PulseWidth2
            SpeedX2Pin = NotIdle            ; start First Output Pulse
            OutPulseCount = 0
        endif
    else
        if SpeedX2Pin = NotIdle then
            if PulseWidth = 0 then          ; countdown output time (24bit)
                if PulseWidth1 = 0 then
                    if PulseWidth2 = 0 then
                        SpeedX2Pin = IdleState ; end of pulse, 
                    else                       ; wait for next transition
                        PulseWidth2 = PulseWidth2 - 1
                        PulseWidth1 = 255
                        PulseWidth  = 255
                    endif
                else
                    PulseWidth1 = PulseWidth1 - 1
                    PulseWidth  = 255
                endif
            else
                PulseWidth = PulseWidth - 1
            endif
        else
          @ NOP                             ; Keep the loop symmetrical
          @ NOP
          @ NOP
          @ NOP
          @ NOP
        endif
        
        if OutPulseCount = 0 then
            if CycleWidth = 0 then          ; countdown to Midpoint of cycle
                if CycleWidth1 = 0 then
                    if CycleWidth2 = 0 then
                        SpeedX2Pin = NotIdle ; Start second pulse
                        OutPulseCount = 1
                        PulseWidth  = LastPulseWidth
                        PulseWidth1 = LastPulseWidth1
                        PulseWidth2 = LastPulseWidth2
                    else
                        CycleWidth2 = CycleWidth2 - 1
                        CycleWidth1 = 255
                        CycleWidth  = 255
                    endif
                else
                    CycleWidth1 = CycleWidth1 - 1
                    CycleWidth  = 255
                endif
            else
                CycleWidth = CycleWidth - 1
            endif
        else
          @ NOP                             ; Keep the loop symmetrical
          @ NOP
          @ NOP
          @ NOP
        endif
    endif
goto Main
end
HTH,