diff --git a/control/gen-fan-zone-defs.py b/control/gen-fan-zone-defs.py
index 03346bc..5f1de45 100755
--- a/control/gen-fan-zone-defs.py
+++ b/control/gen-fan-zone-defs.py
@@ -163,8 +163,10 @@
     e += "},\n"
 
     e += "TimerConf{\n"
-    e += "\t" + event['timer']['interval'] + ",\n"
-    e += "\t" + event['timer']['type'] + "\n"
+    if ('timer' in event['triggers']) and \
+       (event['triggers']['timer'] is not None):
+       e += "\t" + event['triggers']['timer']['interval'] + ",\n"
+       e += "\t" + event['triggers']['timer']['type'] + "\n"
     e += "},\n"
 
     e += "std::vector<Signal>{\n"
@@ -342,6 +344,19 @@
     return signals
 
 
+def getTimer(eTrig):
+    """
+    Extracts and constructs the required parameters for an
+    event timer.
+    """
+    timer = {}
+    timer['interval'] = (
+        "static_cast<std::chrono::microseconds>" +
+        "(" + str(eTrig['interval']) + ")")
+    timer['type'] = "TimerType::" + str(eTrig['type'])
+    return timer
+
+
 def getActions(zNum, zCond, edata, actions, events):
     """
     Extracts and constructs the make_action function call for
@@ -407,11 +422,10 @@
                         param += ("size_t>(" + str(eActions[p]).lower() + ")")
                 else:
                     if p == 'timer':
+                        t = getTimer(eActions[p])
                         param = (
-                            "TimerConf{static_cast<std::chrono::seconds>(" +
-                            str(eActions[p]['delay']) + "), " +
-                            "TimerType::" +
-                            str(eActions[p]['type']) + "}")
+                            "TimerConf{" + t['interval'] + "," +
+                            t['type'] + "}")
                     else:
                         param += (str(eActions[p]['type']).lower() + ">(")
                         if p != 'map':
@@ -459,27 +473,14 @@
     event['triggers'] = {}
     for trig in e['triggers']:
         triggers = []
-        if (trig['name'] == "signal"):
+        if (trig['name'] == "timer"):
+            event['triggers']['timer'] = getTimer(trig)
+        elif (trig['name'] == "signal"):
             if ('signals' not in event['triggers']):
                 event['triggers']['signals'] = []
             triggers = getSignal(event['groups'], trig, events_data)
             event['triggers']['signals'].extend(triggers)
 
-    # Add optional action call timer
-    timer = {}
-    interval = "static_cast<std::chrono::seconds>"
-    if ('timer' in e) and \
-       (e['timer'] is not None):
-        timer['interval'] = (interval +
-                             "(" +
-                             str(e['timer']['interval']) +
-                             ")")
-    else:
-        timer['interval'] = (interval +
-                             "(" + str(0) + ")")
-    timer['type'] = "TimerType::repeating"
-    event['timer'] = timer
-
     return event
 
 
@@ -544,27 +545,14 @@
     precond['triggers'] = {}
     for trig in event['precondition']['triggers']:
         triggers = []
-        if (trig['name'] == "signal"):
+        if (trig['name'] == "timer"):
+            precond['triggers']['pctime'] = getTimer(trig)
+        elif (trig['name'] == "signal"):
             if ('pcsigs' not in precond['triggers']):
                 precond['triggers']['pcsigs'] = []
             triggers = getSignal(precond['pcgrps'], trig, events_data)
             precond['triggers']['pcsigs'].extend(triggers)
 
-    # Add optional action call timer
-    timer = {}
-    interval = "static_cast<std::chrono::seconds>"
-    if ('timer' in event['precondition']) and \
-       (event['precondition']['timer'] is not None):
-        timer['interval'] = (interval +
-                             "(" +
-                             str(event['precondition']['timer']['interval']) +
-                             ")")
-    else:
-        timer['interval'] = (interval +
-                             "(" + str(0) + ")")
-    timer['type'] = "TimerType::repeating"
-    precond['pctime'] = timer
-
     return precond
 
 
