If you're controlling a PWM signal based on CPU temperature ... could this explain the 50-100% control range? The filter wouldn't be the problem for an abrupt cut-off at 50%.
You should manually be able to control the PWM throughout its full range. Check if the variable type for CPU temperature is the problem ... use "unsigned" to eliminate negative numbers.