Unity Health Slider Lerp in Exact seconds.

I used a slider as a health bar. ‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎                            
Values go from 0 to max health of the player.                     
Now when the player takes damage I want to decrease the slider value to new health value but I want slider to finish moving in a certain second.

For example:                                     
If the player takes 20 damage, the slider value decrease in 3 seconds.           
If the player takes 80 damage, again slider value decrease in 3 seconds.

All the examples of sliders I could find were the exact opposite of what I want, bigger the gap between values it take longer to finish but I don’t want this.

int totalTime = 3; //animation time in seconds

private IEnumerable ReduceSlider(float value)
	var startValue = slider.currentValue;
	var endValue = startValue - value;
	float lerp = 0;
	while(lerp < 1)
		lerp += Time.deltaTime / totalTime;
		slider.currentValue = Mathf.Lerp(startValue, endValue, lerp);
	slider.currentValue = endValue; //adding Time.deltaTime will probably never add to a full number, this is just rounding the slider value so it's exactly what we want

You didn’t share your code so I have to come up with my own method to reduce slider value over time.

To increase slider value just change the endValue to startValue + value