unity – Why the Lerp never ending at 0?

0.001266956

private void Slow()
    {
        if (timeElapsed < lerpDuration)
        {
            valueToLerp = Mathf.Lerp(startValue, endValue, timeElapsed / lerpDuration);
            playerAnimator.SetFloat("Forward", valueToLerp);
            timeElapsed += Time.deltaTime;
        }
    }

startValue value is 1 and endValue value is 0
lerpDuration value is 3
timeElapsed value is 0 and valueToLerp value is also 0

In the end, the value of valueToLerp is 0.0002498031

I could add a reset line in the end of the Slow method :

private void Slow()
        {
            if (timeElapsed < lerpDuration)
            {
                valueToLerp = Mathf.Lerp(startValue, endValue, timeElapsed / lerpDuration);
                playerAnimator.SetFloat("Forward", valueToLerp);
                timeElapsed += Time.deltaTime;
            }

            playerAnimator.SetFloat("Forward", valueToLerp);
            valueToLerp = 0;
        }

This will work but only when I call the method Slow once if I tried to call the method again it will not work it will never get to 0 again.

and if I’m not using these two lines in the end then it will not get to 0 even the first time.

I want that I will be able to call Slow many time and it will slowly get to 0 each time I’m calling the method.