diff --git a/control/gen-fan-zone-defs.py b/control/gen-fan-zone-defs.py
index e875e32..a5e4809 100755
--- a/control/gen-fan-zone-defs.py
+++ b/control/gen-fan-zone-defs.py
@@ -702,8 +702,16 @@
             props = []
             for p in i['properties']:
                 prop = {}
-                prop['name'] = str(p['name']).lower()
+                prop['name'] = p['name']
+                prop['func'] = str(p['name']).lower()
                 prop['type'] = parse_cpp_type(p['type'])
+                if ('persist' in p):
+                    persist = p['persist']
+                    if (persist is not None):
+                        if (isinstance(persist, bool)):
+                            prop['persist'] = 'true' if persist else 'false'
+                else:
+                    prop['persist'] = 'false'
                 vals = []
                 for v in p['values']:
                     val = v['value']
diff --git a/control/handlers.hpp b/control/handlers.hpp
index 215662a..6b512fd 100644
--- a/control/handlers.hpp
+++ b/control/handlers.hpp
@@ -14,18 +14,29 @@
  * @details Sets or updates a zone property to the given value using the
  * provided zone dbus object's set property function
  *
- * @param[in] value - Value to set property to
+ * @param[in] intf - Interface on zone object
+ * @param[in] prop - Property on interface
  * @param[in] func - Zone set property function pointer
+ * @param[in] value - Value to set property to
+ * @param[in] persist - Persist property value or not
  *
  * @return Lambda function
  *     A lambda function to set/update the zone property
  */
 template <typename T>
-auto setZoneProperty(T (Zone::*func)(T), T&& value)
+auto setZoneProperty(const char* intf,
+                     const char* prop,
+                     T (Zone::*func)(T),
+                     T&& value,
+                     bool persist)
 {
-    return [func, value = std::forward<T>(value)](auto& zone)
+    return [=, value = std::forward<T>(value)](auto& zone)
     {
         (zone.*func)(value);
+        if (persist)
+        {
+            zone.setPersisted(intf, prop);
+        }
     };
 }
 
diff --git a/control/templates/fan_zone_defs.mako.cpp b/control/templates/fan_zone_defs.mako.cpp
index cb46986..e05d1fc 100644
--- a/control/templates/fan_zone_defs.mako.cpp
+++ b/control/templates/fan_zone_defs.mako.cpp
@@ -54,13 +54,15 @@
                                 %for p in i['props']:
                     ZoneHandler{
                         make_zoneHandler(handler::setZoneProperty(
-                            &Zone::${p['name']},
+                            "${i['name']}",
+                            "${p['name']}",
+                            &Zone::${p['func']},
                             static_cast<${p['type']}>(
                                 %if "vector" in p['type'] or "map" in p['type']:
                                 ${p['type']}{
                                 %endif
-                                %for i, v in enumerate(p['values']):
-                                %if (i+1) != len(p['values']):
+                                %for j, v in enumerate(p['values']):
+                                %if (j+1) != len(p['values']):
                                     ${v},
                                 %else:
                                     ${v}
@@ -69,7 +71,8 @@
                                 %if "vector" in p['type'] or "map" in p['type']:
                                 }
                                 %endif
-                            )
+                            ),
+                            ${p['persist']}
                         ))
                     },
                                 %endfor
