Thanks for the idea, but I don't think it will do anything. The unit_time is calculated from the span during the preamble. When it's evaluating subsequent bits, it compares the span to some ratio of unit_time... Multiplying by two would would make span and unit_time both double so it would work the same.

Good news though! I've been able to read the PIC chip; it had no CP. (Thanks, guys!) The chip is pretty much full so I'm going to go with a larger flash PIC. Using IDA Pro I've got a disassembly that re-assembles to identical object code. I've identified most of the interesting bits, too. I'll order some new chips and see if works using the old code.

The new PIC will have interrupts for the rotary encoder inputs. This will allow me to make an interrupt-driven up/down counter. Then in the main loop I can modify it to send the appropriate number of IR pulses to match the internal counter. In this way it will "buffer" the encoder steps.