Odd conditional problem

I’ve got a problem. Below is the section of code that’s not working right. Simply stated, it’s supposed to read the temperature and turn on a fan if it’s over 90, and turn if off if it’s under 85. But what it’s really doing is turning the fan on and off only at the 90deg mark. Can someone find the problem with my code?

int Fans(int currentFanState){
  int newFanState;
  //check temperature
  currentTemp = int(Thermister(analogRead(thermistorPin)));  // display Fahrenheit
  if (currentTemp >= 90) {
    //turn fans on if above 90 deg
    newFanState = 1;
  else if (currentTemp <= 85){
    //turn fans off if below 85 deg
    newFanState = 0;
  if(newFanState == 1 && newFanState != currentFanState){
    digitalWrite(fanRelay, HIGH); 
  else if (newFanState == 0 && newFanState != currentFanState){
    digitalWrite(fanRelay, LOW);

  return newFanState;

What happens to newFanState when degree is between 86 and 89?

I think you just figured it out for me. I assumed that it would just stay at what it was, but I'm pretty sure I was wrong.
should be:
int newFanState = currentFanState;

you can declare a state variable in the function as static, so that the memory persists from call to call.

static int state;