Glad it worked.

I have a theory, but will want to test it and look at the disassembled code to see.

I think it is the fact that the NOT operator (logical or bitwise) against the alias is being evaluated in an assignment statement to a byte.
This may be having the compiler use a generic macro that is handling the NOT operation as a byte or word output.
The test code above should force a two-step process.
1. Force the NOT operation/assignment to a bit variable.
2. Assign the value + 48 to the Report byte variable.

My guess is that since "Report = !Bell + 48" has the Report byte variable on the left, PBP might be assuming that the interim steps are at a byte (or word) level.

We will see, or I could be totally wrong. :-0

Either way I don't think we should have to burn another variable and cycles to perform what should be a simple function.