I'd suggest changing to:

    return (1 - amount) * value1 + amount * value2;

because it is exact for `amount == 1`. The existing code may not be exact due to floating point math. There is a bit of elaboration on that point in the 'Present' section here: http://fgiesen.wordpress.com/2012/08/15/linear-interpolation-past-present-and-future/