problems with reloading script

My current project is a 2D shooter game. I just started a few days ago and I'm new to the engine. I'm having problems with the reloading script. When i start shooting I get through the designated eight rounds before a five second delay for reloading. When the character is done reloading he has 20 or so rounds before reloading again. Here's the script:

var speed = 3;
var bulletright : Transform;
var bulletleft : Transform;
private var bulletdirection = true;
var gun = 1;
var ammo = 8;
var reloadtime = 5.0;
var fullclip = 8;
private var backup = [ammo];

function Update () {

    transform.Translate ( Input.GetAxis ("Horizontal") * speed * Time.deltaTime, 0 , 0 );

    if (gun == 1 && ammo > 0) {

        if (Input.GetKeyDown(KeyCode.Mouse0)) {

            ammo -= 1;

            if (bulletdirection == false) {

            Instantiate (bulletright, gameObject.Find("BulletSpawnRight")
                .transform.position,Quaternion.identity);
            }

            if (bulletdirection == true){

            Instantiate (bulletleft, gameObject.Find("BulletSpawnLeft")
                .transform.position,Quaternion.identity);
            }
        }
    }

    if (ammo == 0) {
        Reload();
    }

    if (Input.mousePosition.x < 363) {
        bulletdirection = true;
    }

    if (Input.mousePosition.x > 362) {
        bulletdirection = false;
    }
}

function Reload () {
    yield WaitForSeconds(reloadtime);
    ammo = backup[0];
}

How could I edit the script to make the character shoot eight rounds each time before reloading?

You're calling the Reload function multiple times, each one waiting 5 seconds then setting the ammo again, so you could shoot after 5 seconds and you'll have another 5 seconds where you're still getting ammo replenished. What you could do is check whether a reload is already in progress:

var reloading = false;

function Reload () {
    if (reloading) return;
    reloading = true;
    yield WaitForSeconds(reloadtime);
    ammo = backup[0];
    reloading = false;
}