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 rather than 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, which is the same property that 90 REM lets AND and OR double as logical operators. Refusing it here 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