getScaled in EngineBufferScale (the superclass) takes unsigned longs.  I don't understand "has a target depending size."

iRateLerpLength is a holdover from an older version of the algorithm, but it's nice to have an int version of that value so I'll leave it.

it's safe because if buf_size is zero it returns without processing.  I'll use parenthesis to make it more clear.