Interestingly, Bernie,
R101 | R102 != R101:S | R102:S
If you do it the casted way, it does the bitwise OR you'd expect (at least if sent to an :S cast destination register). If you do it without casting, 5.0 | 2.0 = 7.0.
I'm guessing that since OR wants integer arguments, if you don't explicitly cast them, it translates them to INT's by value, then does the bitwise OR. Thus, 5.0 | 2.0 -> 5 | 2 -> 7 -> 7.0 (if assigned to a real register).
Hosties?