Guns Magazine Filling Itself

My gun script is causing my gun to randomly fill up the max ammo, and I’m not sure why.

var projectile : Rigidbody;
var speed = 10;
var Ammo = 6;
var Reloading : boolean = false;
var TexturesToLoad : Texture2D[];
var guiTex : GUITexture;

function Start()
{
	guiTex.texture = TexturesToLoad[6];
}

function Update () {
	guiTex.texture = TexturesToLoad[Ammo];
		
	if (Input.GetButtonDown ("Fire1")) 
	{
		if (Ammo >0)
		{
			clone = Instantiate(projectile, transform.position, transform.rotation);
			clone.velocity = transform.TransformDirection( Vector3 (0, 0, speed));
			Destroy (clone.gameObject, 3);
			Ammo -= 1;
		}
		
		else
		{
			Reloading = true;
			Reload();
		}
	}
	
	if (Input.GetButtonDown("Reload"))
	{
		Reloading = true;
		Reload();
	}
}

function Reload()
{
	yield WaitForSeconds(5);
	Ammo = 6;
	Reloading = false;
}

The problem is the ‘else’ on line 26. Since this is in Update(), this else will be executed every frame until ‘Ammo’ is on longer zero. You have a 5 second wait time in your Reload(). Running at 60 FPS, you will call Reload approximately 300 times before ‘Ammo’ is increased. And each call is a new coroutine that will wait for 5 seconds and then reset ammo to 6. You can fix your problem by changing line 26 to 30 to:

else if (!Reloading)
{
    Reloading = true; 
    Reload();
}