Your patch is interesting.
It looks like you actually left the conditional check for a maximum of 550Mhz in place, and simply changed the result call which otherwise would force 500, to force what the user put in... it looks like you just copied the opcode at the end of the subroutine to the previous opcode to make both results the same.
In mine, I simply removed the conditional checks, leaving the result in place.
I'm trying to understand why your resulting cgminer is 28kB smaller than stock, however. Can you help me understand why that is the case? What else did you change?
-j