Lerp animation duration

Hey guys,
I’m having a problem animating a simple GameObject using the Vector3.Lerp function.
Basically, I have a drawer I want to animate, so I have created a script which expose a public animationDuration variable that will allows me to adjust the open animation time.
However, the problem I’m facing is that whatever value I set for this param, the drawer takes always more or less five seconds to complete.
I know I have another way to do it, exposing a public speed variable that I can use as product in the Lerp t param, but in this way I would not have the full control of the animation duration in seconds.
Can you guys give me a hand?
Here’s a simplified version of the script.

using UnityEngine;
using System.Collections;

public class DrawerController : MonoBehaviour {
	
	public float animationDuration = 2.0f;

 	float timer = 0.0f;
	float animationTimer = 0.0f;
	
	Vector3 closedPosition;
	Vector3 openPosition;
	
	void Start () {
		closedPosition = transform.localPosition;
		openPosition = closedPosition;
		openPosition.x += 0.20f;
	}
	
	void Update () {
		if(Input.GetKeyDown(KeyCode.G)){
		     StartCoroutine("Open");	
		}
	}
	
	IEnumerator Open(){

		while(timer < openingTime){
			timer += Time.deltaTime;
			animationTimer = timer / animationDuration;
			transform.localPosition = Vector3.Lerp(closePosition, openPosition, animationTimer);
			yield return null;
		}
	}
	
}

You can try this below, it works for me:

float ratio = 0;
float duration = 0.5f; // this is the one that will control how long it takes
// value is in second 
float multiplier = 1 / duration;

while (transform.localPosition!= openPosition){
    ratio += Time.deltaTime * multiplier;
    transform.localPosition = Vector3.Lerp(closePosition, openPosition, ratio);
    yield return null;
}