Huge bolded text in manual explaining the LHS RHS behaviour of the casting?
PS! Comparing two different types like this is bad coding in a way.
Either manually cast a integer to a float or a float to a integer before comparison.
In the example above I'd advise using Int() around the floats in the comparison, you should then get the (I assume) intended behaviour as per the code.
The behaviour shown in this example is not wrong,
but I do admit it can be a bit confusing.
But it is correct, 1 (aka 1.0) is not equal to 1.4 obviously.
I've never had this issue myself since almost from the start I always made sure to use Int() on floats in the situtation I needed to do integer compares/math.
AFAIK PureBasic will always cast to float if floats are used in a expression.
(isn't this mentioned in the manual even?)