Remember to post your code so we don't have to guess at what is going on.
//Create startValue = 0; targetValue = 100; speedFactor = 0.2; //Step startValue += speedFactor * (targetValue - startValue); //Or alternatively like this: startValue = lerp(startValue, targetValue, speedFactor);
I'm not sure I understand. lerp does work perfectly. It does exactly what it is supposed to every time. If you're getting unexpected results then there is something in your code, which is why you should post it.