diff --git a/packages/fan.yaml b/packages/fan.yaml
index a8195b20cda251c96f3b248f862d8e8c72e50e07..ecedf851a5ab5fd65ea224554c05ae9ca5d47a42 100644
--- a/packages/fan.yaml
+++ b/packages/fan.yaml
@@ -55,21 +55,21 @@ select:
   - platform: template
     id: temperature_hysteresis
     name: "Fan: Temperature Hysteresis"
-    options: ["1", "2", "3", "4", "5"]
+    options: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]
     initial_option: "1"
     optimistic: true
     restore_value: true
   - platform: template
     id: temperature_min
     name: "Fan: Temperature Off"
-    options: ["19", "20", "21", "22", "23", "24", "25"]
+    options: ["15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"]
     initial_option: "21"
     optimistic: true
     restore_value: true
   - platform: template
     id: humidity_max
     name: "Fan: Humidity On"
-    options: ["40", "45", "50", "55", "60", "65", "70", "75", "80"]
+    options: ["40", "45", "50", "55", "60", "65", "70", "75", "80", "85", "90"]
     initial_option: "70"
     optimistic: true
     restore_value: true
@@ -83,7 +83,7 @@ select:
   - platform: template
     id: humidity_min
     name: "Fan: Humidity Off"
-    options: ["20", "25", "30", "35", "40", "45", "50", "55", "60"]
+    options: ["25", "30", "35", "40", "45", "50", "55", "60", "65", "70", "80"]
     initial_option: "40"
     optimistic: true
     restore_value: true
@@ -107,20 +107,38 @@ script:
   - id: fan_control
     then:
       - lambda: |-
-          // switch fan on when temperature/humidity is above max, unless humidity/temperature is below min 
+          // Normal On:
+          // switch fan on when either temperature or humidity is above "max", unless humidity/temperature is below "min"
           if (
             !id(propbox_fan).state &&
-            ((id(bme280_temperature).state >= atoi(id(temperature_max).state.c_str()) && id(bme280_humidity).state    >= atoi(id(humidity_min).state.c_str())) ||
-            ( id(bme280_humidity).state    >= atoi(id(humidity_max).state.c_str())    && id(bme280_temperature).state >= atoi(id(temperature_min).state.c_str())))
+            (
+              (id(bme280_temperature).state >= atoi(id(temperature_max).state.c_str()) && id(bme280_humidity).state    >= atoi(id(humidity_min).state.c_str())) ||
+              (id(bme280_humidity).state    >= atoi(id(humidity_max).state.c_str())    && id(bme280_temperature).state >= atoi(id(temperature_min).state.c_str()))
+            )
           ) {
             id(propbox_fan).turn_on();
           }
 
-          // switch fan off when temperature and humidity are below max minus hysteresis
+          // Forced Off, ignoring Hysteresis:
+          // switch fan off when either temperature or humidity are below "min", unless humidity/temperature is above "max"
           else if (
             id(propbox_fan).state &&
-            id(bme280_temperature).state <= atoi(id(temperature_max).state.c_str()) - atoi(id(temperature_hysteresis).state.c_str()) && 
-            id(bme280_humidity).state    <= atoi(id(humidity_max).state.c_str())    - atoi(id(humidity_hysteresis).state.c_str())
+            (
+              (id(bme280_temperature).state <= atoi(id(temperature_min).state.c_str()) && id(bme280_humidity).state    <= atoi(id(humidity_max).state.c_str())) ||
+              (id(bme280_humidity).state    <= atoi(id(humidity_min).state.c_str())    && id(bme280_temperature).state <= atoi(id(temperature_max).state.c_str()))
+            )
+          ) {
+            id(propbox_fan).turn_off();
+          }
+
+          // Normal Off, respecting Hysteresis:
+          // switch fan off when both temperature and humidity are below "max minus hysteresis"
+          else if (
+            id(propbox_fan).state &&
+            (
+              id(bme280_temperature).state <= atoi(id(temperature_max).state.c_str()) - atoi(id(temperature_hysteresis).state.c_str()) && 
+              id(bme280_humidity).state    <= atoi(id(humidity_max).state.c_str())    - atoi(id(humidity_hysteresis).state.c_str())
+            )
           ) {
             id(propbox_fan).turn_off();
           }