This throws a exceptinon:
double f = 3.8f;
I looked at the code and the Subject.CompareTo(0) > 0 does not work with float and double.
And the comment is wrong. As it is implemented now, 0 is not validated as positive value but the comments says 0 or greater.