Problemas con if

Buenas,
tengo el siguiente codigo en void loop:

 float altutud_media2 = meanFilter.AddValue(A);
int dif=(altutud_media2-altutud_media)*100;
//Serial.println(dif);

  int act=0;
  //Serial.print(media);Serial.print("\t");Serial.print(desviacion);Serial.print("\t");Serial.print(mediana);Serial.print("\t");Serial.println(suma);
 
 if (desviacion < 16.10) 
{ 
        act = 1;
       
}
else 
{
    if (desviacion <158.898) 
    {
        if (mediana<1005.55) 
        {
            if (media>=968.31) 
            {
                act = 2;
            }
            else 
            {
                act = 3;
            }
        }
        else 
        {
            act = 4;
        }
    }
    else 
    {
        if (suma<0.66) 
        {
            act = 4;
        }
        else 
        {
            if (media<972.88) 
            {
                act = 3;
            }
            else 
            {
                if (desviacion<197.63) 
                {
                    act = 4;
                }
                else 
                {
                    act = 5;
                }
            }
        }
    }

}
if(((act==4)||(act==5)||(act==3))&&(dif>20)){
  act=5;
  }
if(((act==4)||(act==5)||(act==3))&&(dif<-20)){
    act=4;
  }
if(((act==4)||(act==5)||(act==3))&&((dif<20)&&(dif>-20))){
    act==3;
  }

if((bos==act) || (bos==0)){
  bos=act;  }

else if(bos==1 && act==2){
  bos=2;  }
else if(bos==1 && act!=2){
  bos=2;}
else if(bos==2){  
  bos=act;}
else if(bos==3 && act==1){
  bos=2;}
else if(bos==3 && act!=1){
  bos=act;}
else if(bos==4 && (act==2 || act==3)){
  bos=act;}
else if(bos==4 && (act==1 || act==5)){
  bos=2;}
else if(bos==5 && (act==2 || act==3)){
  bos=act;
  }
else if(bos==5 && (act==1 || act==5)){
  bos=2;
}
 
  

BT.print(bos);BT.print(" ");BT.println(dif);
//Serial.print(bos);Serial.print(" ");Serial.println(difalt);

}

El problema esta en que esta parte no me funciona y no se el por qué:

if(((act==4)||(act==5)||(act==3))&&(dif>20)){
  act=5;
  }
if(((act==4)||(act==5)||(act==3))&&(dif<-20)){
    act=4;
  }
if(((act==4)||(act==5)||(act==3))&&((dif<20)&&(dif>-20))){
    act==3;
  }

La cuestión es que no cumple con la condición de dif. Es decir, si act es 4, 5 o 3, después no cumple que dif sea mayor o menor. He probado también a poner el “<” y “>” como “>>” y “<<”
¿Alguien me podría orientar?

Hola, a ver así…(no esta probado)

if (act>2 and act<6) {
if (dif>20) {
act=5;
}
}

muchisimas gracias!!, funciona!!