Apparently, I also misunderstood that BOOL/NULL evaluated as INT, but it's evaluated as BOOL.
Therefore, this is not a bug.
NULL or FALSE < (-1000)
is evaluated as (both operands are converted to bool)
FALSE < (bool)(-1000)
and
(FALSE < TRUE) is FALSE