Object only circling object when it is supposed to go straight towards it

so i have a fish object and a food object, i want the fish to find some food and go eat it when it is hungry but the fish only spins around the food and never able to eat it because the mouth can’t reach

//this is the code for finding and locating the food

public Basic_Movement move;

public Transform mouth;

public float hunger;
public float maxHunger;

public float hungerCool;
public float hungerCoolStart;

public float eatCool;
public float eatCoolStart;

public bool lookingForFood;
public bool seenFood;

public string[] diet;

public GameObject food;
public GameObject closest;
public GameObject lastClosest;

void Update()
{
    if (hunger <= maxHunger / 1.5f) {
        lookingForFood = true;
    } else {
        lookingForFood = false;
        seenFood = false;
    }
    if (lookingForFood) {
        FindClosest(diet);
        food = closest;
    }
    if (food) {
        seenFood = true;
    }
    if (hunger > maxHunger) {
        hunger = maxHunger;
    }
    if (hungerCool <= 0 && hunger >= 1) {
        hungerCool = hungerCoolStart;
        hunger -= 1;
    }
    if (seenFood && lookingForFood && food) {
        move.target = food.transform.position;
        if (Vector3.Distance(mouth.position, food.transform.position) < .25f) {
            move.rotSpeed = 0;
            move.moveSpeed = 0;
            eatCool -= Time.deltaTime;
            if (eatCool <= 0) {
                eatCool = eatCoolStart;
                food.GetComponent<Food>().Eat();
                hunger += food.GetComponent<Food>().filling;
            }
        }
    }
    hungerCool -= Time.deltaTime;
}

void FindClosest(string[] dietTag) {
    for (int i = 0; i < dietTag.Length; i++) {
        GameObject[] foods = GameObject.FindGameObjectsWithTag(dietTag[i]);
        List<GameObject> consumableFood;
        consumableFood = foods.ToList();
        for (int o = 0; o < consumableFood.Count; o++) {  
            if (consumableFood.Count > 0) {
                Vector3 enemyDirectionLocal = transform.InverseTransformPoint(consumableFood[o].transform.position);
                if (enemyDirectionLocal.x > 0.5f || enemyDirectionLocal.x < -0.5f || enemyDirectionLocal.y > 0.5f || enemyDirectionLocal.y < -0.5f) {
                    consumableFood.Remove(consumableFood[o]);
                } else {
                    if (lastClosest) {
                        if (Vector3.Distance(consumableFood[o].transform.position, transform.position) < Vector3.Distance(lastClosest.transform.position, transform.position)) {
                            closest = consumableFood[o];
                            lastClosest = closest;
                        } else {
                            consumableFood.Remove(consumableFood[o]);
                        }
                    } else {
                        closest = consumableFood[o];
                        lastClosest = closest;
                    }
                }
            }
        }
    }
}

//and this is the code for actually moving the fish

public Vector3 target;

public Transform rotStick;

public Animator anim;

public float rotSpeed;
public float rotSpeedMax;
public float rotSpeedMin;
public float moveSpeedMax;
public float moveSpeedMin;
public float moveSpeed;

public float changeTimeMove;
public float changeTimeStartMoveMax;
public float changeTimeStartMoveMin;

public float changeTime;
public float changeTimeStart;

public float min;
public float max;

void Update()
{
    Quaternion lookAt = Quaternion.LookRotation((target - transform.position).normalized);
    transform.rotation = Quaternion.Slerp(transform.rotation, lookAt, Time.deltaTime * rotSpeed);

    Vector3 enemyDirectionLocal = transform.InverseTransformPoint(target);
    anim.SetFloat("X", enemyDirectionLocal.x);
    anim.SetFloat("Y", enemyDirectionLocal.y);

    // if (enemyDirectionLocal.x < 0)
    // {
    //         Debug.Log("LEFT");
    // }
    // else if (enemyDirectionLocal.x > 0)
    // {   
    //         Debug.Log("RIGHT");
    // }

    if (changeTime <= 0) {
        changeTime = changeTimeStart;
        target.x = Random.Range(min, max);
        target.y = Random.Range(min, max);
        target.z = Random.Range(min, max);
    }

    if (changeTimeMove <= 0) {
        float newTime = Random.Range(changeTimeStartMoveMin, changeTimeStartMoveMax);
        changeTimeMove = newTime;
        moveSpeed = Random.Range(moveSpeedMin, moveSpeedMax);
        rotSpeed = Random.Range(rotSpeedMin, rotSpeedMax);
    }

    changeTimeMove -= Time.deltaTime;
    changeTime -= Time.deltaTime;
    transform.position += rotStick.forward * moveSpeed;
}

public void OnDrawGizmos() {
    Gizmos.color = Color.red;
    Gizmos.DrawSphere(target, .125f);
}