Joystick and lcd problems

I'm using a arduino Mega2560 an lcd and an analog joystick. my aim is when i move the joystick in a direction the lcd will say which direction its going (forwards, backwards, left and right) and this is something I've done already but i also want to switch "modes" when i press the joystick in and go forwards it says up and when i go backwards it says down but as I stand when i go forwards or backwards the lcd just switches between forwards/up and backwards/down if anyone could help correct my code im sure its something really stupid just need some guidance. thank you

#include <LiquidCrystal.h>

const int SW_pin = 13; // digital pin connected to switch output
const int X_pin = 0; // analog pin connected to X output
const int Y_pin = 1; // analog pin connected to Y output
boolean updown=false;
int switchState = 0;

LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
int xp=0;

void setup() {
  pinMode(SW_pin, INPUT);
  digitalWrite(SW_pin, HIGH);
  Serial.begin(115200);
  
  lcd.begin(16, 2);
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Manual Mode");
}

void loop() {
  Serial.print("Switch:  ");
  Serial.print(digitalRead(SW_pin));
  Serial.print("\n");
  Serial.print("X-axis: ");
  Serial.print(analogRead(X_pin));
  Serial.print("\n");
  Serial.print("Y-axis: ");
  Serial.println(analogRead(Y_pin));
  Serial.print("\n\n");
  delay(500);

   switchState = digitalRead(SW_pin);
  if (switchState == HIGH) {    
    if(updown==true){
      updown=false;
    }  else{
      updown=true;
    }
  }

if (updown == true){
if (analogRead(X_pin)>=500 & analogRead(X_pin)<=600 & analogRead(Y_pin)>=500 & analogRead(Y_pin)<=600){
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Manual Mode  0");
  delay(10);
  lcd.setCursor(0,1);
  lcd.print("Move Joystick");
  delay(10);
}else if (analogRead(X_pin)<=500){
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Manual Mode  0");
  delay(10);
  lcd.setCursor(0,1);
  lcd.print("Left");
  delay(10);
}else if (analogRead(X_pin)>=600){
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Manual Mode  0");
  delay(10);
  lcd.setCursor(0,1);
  lcd.print("Right");
  delay(10);
}else if (analogRead(Y_pin)<=500){
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Manual Mode  0");
  delay(10);
  lcd.setCursor(0,1);
  lcd.print("Forward");
  delay(10);
}else if (analogRead(Y_pin)>=600){
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Manual Mode  0");
  delay(10);
  lcd.setCursor(0,1);
  lcd.print("Backwards");
  delay(10);
}
}else if (updown == false){
  if (analogRead(X_pin)>=500 & analogRead(X_pin)<=600 & analogRead(Y_pin)>=500 & analogRead(Y_pin)<=600){
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Manual Mode  1");
  delay(10);
  lcd.setCursor(0,1);
  lcd.print("Move Joystick");
  delay(10);
}else  if(analogRead(Y_pin)<=500){
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Manual Mode  1");
  delay(10);
  lcd.setCursor(0,1);
  lcd.print("Up");
  delay(10);
}else if (analogRead(Y_pin)>=600){
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Manual Mode  1");
  delay(10);
  lcd.setCursor(0,1);
  lcd.print("Down");
  delay(10);
}
}

Sorry i figured it out the problem was that i had

 if (switchState == HIGH) {

instead of

 if (switchState == LOW) {

now it works perfectly