Timing Question

Hey, I built a device to monitor battery voltage and do certain actions depending on what the voltage was at. If it passes a certain voltage it does one thing, then past that another thing. Right now, no matter what, it performs both actions. Is there a fault in my code? I can't find any.

int buzzer = 1, voltpin = 2, val = 0, mosfet = 0, cut = 0, buzz = 0;
boolean buzzed = false, cutoff = false;

void setup() {

  pinMode(mosfet, OUTPUT);
  pinMode(buzzer, OUTPUT);
  delay(3000);

  val = analogRead(voltpin);

  if (val >= 560) {
    buzz = 580;
    cut = 566;
  }
  else if ( val >= 364) {
    buzz = 387;
    cut = 363;
  }
}

void loop() {

  val = analogRead(voltpin);
  if (cutoff == false) {

    if (val <= buzz && buzzed == false) {

      tone(buzzer, 4500);
      delay(250);
      noTone(buzzer);
      delay(250);
      tone(buzzer, 4500);
      delay(250);
      noTone(buzzer);
      delay(250);
      tone(buzzer, 4500);
      delay(1000);
      noTone(buzzer);
      buzzed = true;
    }

    if (val <= cut && cutoff == false) {
      digitalWrite(mosfet, LOW);
      cutoff = true;
    }
    if (cutoff == false) {
      digitalWrite(mosfet, HIGH);
    }
  }
  delay(1000);
}

Thanks