so the problem the entire time was that the input float value was being cast to integerValue, which causes an incorrect rounding that screwed up the pins location