           elementOff(0);
         }
         //now turn on RIMS
-        if ((digitalRead(RIMSSSR) == LOW) && (currentMillis - previousMillis > RIMSoffDuration))
-        {
-          elementOn(1);
-        }
-	else
-	{
-          if ((currentMillis - previousMillis > RIMSonDuration) && (currRIMS > (setRIMS - 5)))
+
+        //are we close to target temp?
+        if (currRIMS > (setRIMS - 2))
+        {
+          if ((digitalRead(RIMSSSR) == LOW) && (currentMillis - previousMillis > RIMSoffDuration))
+          {
+            elementOn(1);
+          }
+          if ((digitalRead(RIMSSSR) == HIGH) && (currentMillis - previousMillis > RIMSonDuration))
           {
             elementOff(1);
 

  if (currentMillis - tempPrevMillis  > (long)tempInterval)
  {
    currHLT = HLTthermocouple.readFarenheit();
    if (isnan(currHLT))
    {
      currHLT = 0;
    }

    }
    
    currRIMS = RIMSthermocouple.readFarenheit();
    if (isnan(currRIMS) | (currRIMS < 55) | (currRIMS > 220))
    {
      currRIMS = 0;
    }
