The ± 10% is for max speed with low nose adapter. PWM is ± 20% min speed. There's also rounding since the fan speed % is based on 1-64. So for instance 31% & 32% would be the same value of 20. Then there's also some rounding in the actual calculation because of temp reading fluctuations. A rough example, temp readings can flip back and forth from 39° to 40° if you run ipmi-sensors every sec. So I implemented some rounding so it might not send a command till it differs ± 2°. This is so it's not constantly sending ipmi commands for virtually no change.