10 REM A truth value carries its payload in boolvalue, not floatval. The three 20 REM numeric operators were `if ( INTEGER ) ... else `, and 30 REM that else was a catch-all, not a float branch -- so a truth value 40 REM on the LEFT computed 0 - 1 into a field nothing reads, kept its BOOLEAN 50 REM type, and printed `true` instead of -2. Silent, and wrong twice over. 60 A# = 1 70 PRINT (A# == 1) 80 REM On the RIGHT it stays legal and stays -1, the same property that 90 REM lets AND and OR double as logical operators. Refusing it would have 100 REM broken every condition in the language. 110 PRINT 5 - (A# == 1) 120 PRINT 5 * (A# == 1) 130 PRINT 5 + (A# == 1) 140 PRINT 4 - (A# == 2) 150 REM And on the left it is refused by name rather than computed. 160 PRINT (A# == 1) - 1