Relading Script does not work

I have been trying to get this reload script to work for a while but it does not work. This script waits for the capmag to reach zero then wait for 2 seconds and then fire again. However it only works the first time after that it chooses to fire 9 to 15 bullets at one time depending on how fast I am click my mouse button.

using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;

public class Weapon : MonoBehaviour
{
    public Transform firepoint;
    public GameObject Bullet;
    private int magcap;
    public TextMeshProUGUI reload;
    private bool notempty;
    // Start is called before the first frame update
    void Start()
    {
        reload.text = "";
        magcap = 0;
        notempty = true;
    }

    // Update is called once per frame
    void FixedUpdate()
    {
        if (Input.GetMouseButtonDown(0) && notempty)
        {
            magcap++;
            if(magcap == 6)
            {
                notempty = false;
            }
            //magcap = magcap + 1;
            shoot();
        }
        if(!notempty)
        {
            reload.text = "Reloading...";
            StartCoroutine(Reloading());
        }
    }

    private void shoot()
    {
        
        Instantiate (Bullet, firepoint.position, firepoint.rotation);  
    }

    IEnumerator Reloading()
    {
        
        yield return new WaitForSeconds(2);
        reload.text = "";
        magcap = 0;
        notempty = true;

    }
}

At first I was only using the capmag var to check weather the magize is empty or not but when it not working I also added the bool notempty but the results were same.

If the player clicks the mouse button more than six times rapidly, the magcap will go beyond six, and the reloading process will not trigger even if the magazine is empty.

Here is the fix:

using System.Collections;
using TMPro;
using UnityEngine;

public class Weapon : MonoBehaviour
{
    public Transform firepoint;
    public GameObject Bullet;
    private int magcap;
    public TextMeshProUGUI reload;
    private bool notempty;

    void Start()
    {
        reload.text = "";
        magcap = 0;
        notempty = true;
    }

    void FixedUpdate()
    {
        if (Input.GetMouseButtonDown(0) && notempty)
        {
            magcap++;
            if (magcap == 6)
            {
                notempty = false;
            }
            shoot();
        }

        if (!notempty && magcap == 6)
        {
            reload.text = "Reloading...";
            StartCoroutine(Reloading());
        }
    }

    private void shoot()
    {
        Instantiate(Bullet, firepoint.position, firepoint.rotation);
    }

    IEnumerator Reloading()
    {
        yield return new WaitForSeconds(2);
        reload.text = "";
        magcap = 0;
        notempty = true;
    }
}