diff --git a/control/gen-fan-zone-defs.py b/control/gen-fan-zone-defs.py
index 3457d41..04f206f 100755
--- a/control/gen-fan-zone-defs.py
+++ b/control/gen-fan-zone-defs.py
@@ -11,12 +11,14 @@
 from argparse import ArgumentParser
 from mako.template import Template
 
-#Note: Condition is a TODO
+#Note: Condition is a TODO (openbmc/openbmc#1500)
 tmpl = '''/* This is a generated file. */
 #include "manager.hpp"
 
 using namespace phosphor::fan::control;
 
+const unsigned int Manager::_powerOnDelay{${mgr_data['power_on_delay']}};
+
 const std::vector<ZoneGroup> Manager::_zoneLayouts
 {
 %for zone_group in zones:
@@ -151,8 +153,15 @@
     with open(args.fan_yaml, 'r') as fan_input:
         fan_data = yaml.safe_load(fan_input) or {}
 
-    zone_data = buildZoneData(zone_data, fan_data)
+    zone_config = buildZoneData(zone_data.get('zone_configuration', {}),
+                                fan_data)
+
+    manager_config = zone_data.get('manager_configuration', {})
+
+    if manager_config.get('power_on_delay') is None:
+        manager_config['power_on_delay'] = 0
 
     output_file = os.path.join(args.output_dir, "fan_zone_defs.cpp")
     with open(output_file, 'w') as output:
-        output.write(Template(tmpl).render(zones=zone_data))
+        output.write(Template(tmpl).render(zones=zone_config,
+                     mgr_data=manager_config))
