type TComparisonResult=(Less value -1, Equals, Greater, Strange value 10);
i.e. Ord(Less)=-1, Ord(Equals)=0, Ord(Greater)=1, Ord(Strange)=10.
Another problem ... it will make pred() and succ() harder if they must do succ(Greater) => Strange and pred(Strange) => Greater. I think setting the initial value would be reasonable, but not allowing a jump in the values.