Never use equality for floating point values. If all your numbers are integers, then run them through an integer parameter first. But when you see a number like “31.0”, it is probably rounded to look nice. The actual number is liable to be something like “31.000000000000002”.
See: Strange behavior of Smaller Than component
And: http://www.grasshopper3d.com/forum/topics/floating-point-error-why-equality-doesn-t-work-as-it-should