If not pissing away 3/4 of the encoder resolution is something worth doing here's a replacement routine that does 4x decoding. It might not be the most optimized or elegant way but is works. Surprisingly (to me) it seems to work fine up to around 8kHz which means it does 32000 counts per second when being fed "perfect" quadrature signals my function gen.

Code:
' Added variables:
Encoder VAR BYTE
Old_Enc VAR BYTE
Test VAR BYTE
Dir VAR WORD          ' Must be same size as Position variable


'-------------------------------------------------------------
'--------------Poll encoder and keep count -------------------
'-------------Alternative routine with 4x decoding------------
'-------------------------------------------------------------

    Encoder.0 = Ch_A
    Encoder.1 = Ch_B

    Test = Encoder ^ Old_Enc

    Dir = 0

    If Test = 1 THEN
        If Old_Enc = 0 THEN Dir = 1
        IF Old_Enc = 1 THEN DIR = -1
        IF Old_Enc = 2 THEN Dir = -1
        If Old_Enc = 3 Then Dir = 1
    ENDIF

    IF Test = 2 THEN
        IF Old_Enc = 0 THEN DIR = -1
        IF Old_Enc = 1 THEN Dir = 1
        IF Old_Enc = 2 THEN Dir = 1
        IF Old_Enc = 3 THEN Dir = -1
    ENDIF

    Position = Position + Dir
    
    Old_Enc = Encoder