What is wrong with my Coroutine?

I have an issue and I am out of my wits. I have created a 3d button, on and off. I created a separate script that works fine and sets a bool to either false or true depending on the button state (up or down).

When i call this bool to check if is true, it works the first time, but then my coroutine does not work as intended.

I can share both codes and scenes if need be. Please help I do not what else to try anymore and thank you in advance.

This is the code for the button attached to a 3d cube.

using UnityEngine;
using System.Collections;

public class ButtonStates : MonoBehaviour {

    private bool _isButtonDown = false;
    private bool _isBrewing = false;
    private Vector3 up = Vector3.zero;
    private Vector3 down = new Vector3(0f, 0f, 0.1f);

    public bool IsButtonDown
    {
        get
        {
            return _isButtonDown;
        }
        set
        {
            _isButtonDown = value;
        }
    }

    public bool IsBrewing
    {
        get
        {
            if(IsButtonDown == true)
            {
                _isBrewing = true;
                this.transform.position = down;
            }
            else if(IsButtonDown == false)
            {
                _isBrewing = false;
                this.transform.position = up;
            }

            return _isBrewing;
        }
    }
	
    void ButtonPosition()
    {
        IsButtonDown = !IsButtonDown;
        
        if (IsButtonDown == true)
        {
            transform.position = down;
        }
        else if(IsButtonDown == false)
        {
            transform.position = up;
            _isBrewing = false;
        }
    }

    void OnMouseDown()
    {
        ButtonPosition();
    }

}

This is the code for the other class that is supposed to call a coroutine

using UnityEngine;
using System.Collections;

public class BrewController : MonoBehaviour
{

    public Sprite coffee;
    public float flowSpeed = 1f;
    public BoxCollider buttonColl;

    private ButtonStates button;


    void Awake()
    {
        button = FindObjectOfType<ButtonStates>();
    }


    IEnumerator BrewingCoffee()
    {
        if (button.IsBrewing)
        {
            buttonColl.enabled = false;
            // Do Coffee brewing function
            yield return new WaitForSeconds(flowSpeed);
            button.IsButtonDown = false;
            buttonColl.enabled = true;
        }
    }

    void Update()
    {
        StartCoroutine(BrewingCoffee());

    }
    
}

thank you that worked.