The predicate functions in CLIPS/Ada 4.4 don't work properly when comparing 
two floating point numbers. For example, (< 4.0 3.0) returns TRUE.

This bug can be fixed by changing the lines in the procedure 
Evaluate_Logical_Sequence in the file evalgens.ada from

      If Left.Kind = INTEGER_OBJECT then
        Left.Numeric_Value := Clips_Real(Left.Numeric_Int);
        Right.Numeric_Value := Clips_Real(Right.Numeric_Int);
        Subtotal := Subtotal and (Left.Numeric_Value * Right.Numeric_Value);
      end if;
to

      If Left.Kind = INTEGER_OBJECT then
        Left.Numeric_Value := Clips_Real(Left.Numeric_Int);
        Right.Numeric_Value := Clips_Real(Right.Numeric_Int);
      end if;
      Subtotal := Subtotal and (Left.Numeric_Value * Right.Numeric_Value);

(The change is just moving the subtotal statement, line 141, outside of
 the enclosing "end if;").