Most definitely, you must not use PAUSEUS.

And no, you cant use B = B << 4
The CPU can only shift one bit at a time. So it requires a loop and a variable to count the number of shifts.
That uses a SYSTEM variable.

And there are two more issues that cause instability.

1) The reason I had to change the capacitors is the @ NOP which changes timing with different oscillator frequencies.
It should be replaced with ...
Code:
@ DelayUS 1
And the capacitors should be left at 4.7nF
That way it will work with all PBP OSC frequencies.
.
2) And this statement also affects System variables, for the same reason as B =B << 4 ...
Code:
D = B >> E
It could be replaced with ...
Code:
F  var byte
G  var byte

;D = B >> E
F = E
G = B
ShiftLoop
    G = G >> 1
    F = F - 1
IF F != 0 THEN ShiftLoop
D = G.0
Although I have a feeling it can be reduced somehow.
.
I think that should give a stable include file.
At least it works well here.

But I'll add that you are using common variable names in the include like ...A, B, C etc.
That means that when someone uses your include, they cannot use those variable names.
It's better to make unique variable names that are unlikely to be used by the person using your code.
Descriptive names are the best. Try to use a name that describes what the variable is used for.