У вас есть традиционная реализация углов намотки, которые на порядок меньше желаемого диапазона.
Модуль немного странный для числа с плавающей запятой - он возвращает отрицательное значение для отрицательного значения, так что вам все равно нужно иметь ветвление, и оно включает деление, которое медленнее на некоторых машинах (как в случае, когда я не нашел машину, где % значительно дешевле, чем обход цикла с парой вычитаний два или три раза).
Если ваши значения находятся в пределах, скажем, от -1000 до +1000, то ваша версия будет более четкой и быстрой. Если ваши значения шире этого, выберите версию на основе модуля. Если это очень важно, протестируйте оба на вашем оборудовании с диапазонами значений, которые вы собираетесь использовать.