Improved my HSV conversion methods.  They're not perfect... check the test suite.  I think the problem arises because of the imperfection of Javascript's floating point math.   I'm not sure though.