Boolean && operator not working correctly

Hello I am having some issues with the && operator in an IF statement, The code compiles fine but the output does not turn on even though the IF statement is met. Any assistance is greatly appreciated.

#include <OneWire.h>
#include <DallasTemperature.h>


// Define Statements //

#define TEMPERATURE_PRECISION 9

// Pin Defines //

#define ONE_WIRE_BUS 2
#define Pump_Pin 3

// Ints and Booleans // 

int numberOfDevices;
int TempArray[5];
int ZoneSetPointArray[4] = {70,50,50}; // Set1 = 50, Set2 = 50, Set3 = 50, Set4 = Null
boolean BelowSet[2] = {true};
boolean AboveSet[2] = {false};

// One Wire Stuff //

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

DeviceAddress Zone1Sensor = { 0x28, 0xFF, 0x91, 0x1F, 0x3C, 0x04, 0x00, 0xCE };

DeviceAddress SensorArray;

    // ONE WIRE SETUP //

    // function to print the temperature for a device //

  void printTemp(DeviceAddress deviceAddress)
{
    float tempC = sensors.getTempC(deviceAddress);
    if (tempC != DEVICE_DISCONNECTED)
    {
      Serial.print(" Current Temp C: ");
      Serial.print(tempC);
    }
    else Serial.print("DEVICE DISCONNECTED");
    Serial.print(" ");
}

    // function to print a device address //
    
  void printAddress(DeviceAddress deviceAddress)
{
    for (uint8_t i = 0; i < 8; i++)
    {
      Serial.print("0x");
      if (deviceAddress[i] < 16) Serial.print("0");
      Serial.print(deviceAddress[i], HEX);
      if (i < 7) {
       Serial.print(", ");
    }
  }
}


    // main function to print information about a device //
    
  void printData(DeviceAddress deviceAddress)  // printData(OutsideSensor);
{
  Serial.print("Device Address: ");
  printAddress(deviceAddress);
  Serial.print(" ");
  printTemp(deviceAddress);
  Serial.println();
}

  void printAlarmInfo(DeviceAddress deviceAddress)
{
  char temp;
  printAddress(deviceAddress);
  temp = sensors.getHighAlarmTemp(deviceAddress);
  Serial.print(" High Alarm: ");
  Serial.print(temp, DEC);
  Serial.print("C");
  Serial.print(" Low Alarm: ");
  temp = sensors.getLowAlarmTemp(deviceAddress);
  Serial.print(temp, DEC);
  Serial.print("C");
  Serial.print(" ");
}


    // function that will be called when an alarm condition exists during DallasTemperatures::processAlarms(); //

  void newAlarmHandler(uint8_t* deviceAddress)
{
  Serial.println("Alarm Handler Start"); 
  printAlarmInfo(deviceAddress);
  printTemp(deviceAddress);
  Serial.println();
  Serial.println("Alarm Handler Finish");
}


  // Celsius to Fahrenheit //
  
  float CtoF (float temp)
   {
     return (temp*1.8 + 32);
   }  

void setup(){


  Serial.begin(9600);

// Relay Initialization // 

digitalWrite(Pump_Pin, HIGH);

// Pin Setup //

pinMode(Pump_Pin, OUTPUT);

// Begin One Wire Sensors // 

  sensors.begin();          // Start up the library
 
  numberOfDevices = sensors.getDeviceCount();  // Grab a count of devices on the wire
  
  Serial.print("Locating devices...");   // locate devices on the bus
  Serial.print("Found ");
  Serial.print(numberOfDevices, DEC);
  Serial.println(" devices.");

  // report parasite power requirements
  Serial.print("Parasite power is: "); 
  if (sensors.isParasitePowerMode()) Serial.println("ON");
  else Serial.println("OFF");

  // Sensor Address Look-up  // 
  // Loop through each device, print out address //
  for(int i=0;i<numberOfDevices; i++)
  {
    // Search the wire for address
    if(sensors.getAddress(SensorArray, i))
  {
    Serial.print("Found device ");
    Serial.print(i, DEC);
    Serial.print(" with address: ");
    printAddress(SensorArray);
    Serial.println();
                    
    Serial.print("Setting resolution to ");
    Serial.println(TEMPERATURE_PRECISION, DEC);
    
    // set the resolution to TEMPERATURE_PRECISION bit (Each Dallas/Maxim device is capable of several different resolutions)
    sensors.setResolution(SensorArray, TEMPERATURE_PRECISION);
          Serial.print("Resolution actually set to: ");
    Serial.print(sensors.getResolution(SensorArray), DEC); 
    Serial.println();
  }else{
    Serial.print("Found ghost device at ");
    Serial.print(i, DEC);
    Serial.print(" but could not detect address. Check power and cabling");
  }
  }
  
}

void loop() {
  // put your main code here, to run repeatedly:

// Tell Sensors to begin looking for Temperatures //

sensors.requestTemperatures();

 if (sensors.isConnected(Zone1Sensor)) 
  {
    TempArray[0] = CtoF(sensors.getTempC(Zone1Sensor));  // Outside Temperature Read.
  } 
  else {
    TempArray[0] = DEVICE_DISCONNECTED;
  } 
   Serial.print(TempArray[0]); 
   Serial.println(" F Zone One Temperature \n"); 

if (TempArray[0] <= (ZoneSetPointArray[0] - 2)) {
  BelowSet[0] = true;
  Serial.println("BelowSet = true");
}
else {
  BelowSet[0] = false;
  Serial.println("BelowSet = false");
}

if (TempArray[0] >= (ZoneSetPointArray[0] + 0.5)) {
  AboveSet[0] = true;
  Serial.println("AboveSet = true");
}
else {
  AboveSet[0] = false;
  Serial.println("AboveSet = false");
}

// Setpoint Activating Relay // 

if ((BelowSet[0] = true) && (AboveSet[0] = false)) {
  digitalWrite(Pump_Pin, LOW);
  Serial.println("Pump Set On");
}
else {
  digitalWrite(Pump_Pin,HIGH);
  Serial.println("Pump Set Off");
}
Serial.print("Actual ZoneSetPointArray[0] = ");
Serial.println(ZoneSetPointArray[0]);

delay (1000);
}
if ((BelowSet[0] = true) && (AboveSet[0] = false)) {

No, && works perfectly. ALWAYS. The problem is your code. You are ASSIGNING "true" to BelowSet[0], and ASSIGNING "false" to AboveSet[0]. The comparison operator is "==", not "=".

Regards,
Ray L.

Thank you very much for the help. Greatly appreciated.