Lose one life when player hits the water

Hello,
I want to change the number of lives every time the player hits the water. I wrote this code so far:

public var dieSound:AudioClip;
static var lives = 3;

function Start () {
	
}

function Update () {
	if(lives == 0)
    {
		Application.LoadLevel("menu");
	}
}

public function OnGUI() 
{
	GUI.backgroundColor = Color.blue;
	GUI.Button (Rect (10, 10, 100, 30), "Lives: " + lives);
}

function OnControllerColliderHit (hit : ControllerColliderHit) 
{
	if (hit.collider.tag == "Water")
	{
		// play dying sound
		audio.PlayOneShot(dieSound);
		
		// show mission fail UI
		GameObject.Find("MissionTXT").guiText.enabled = true;
		// wait until it's ended
		yield WaitForSeconds(dieSound.length + 0.01);
		transform.position = GameObject.FindWithTag("Respawn").transform.position;
		
		if (transform.position == GameObject.FindWithTag("Respawn").transform.position) 
		{
			GameObject.Find("MissionTXT").guiText.enabled = false;
			lives = lives - 1;
		}
	}
}

The problem is that when the player hits the water, lives change from 3 to -120. I think that happens because the player is on the water for like 6-7 seconds. So character may hits the water 120 times until he goes back to the original position (Respawn position).

Can anyone help me with that please?

You could add a bool variable called isDead. When player hits the water, check if isDead == false. If it is false, set isDead to true, and subtract a life.