diff --git a/control/gen-fan-zone-defs.py b/control/gen-fan-zone-defs.py
index 30acf47..0539ef9 100755
--- a/control/gen-fan-zone-defs.py
+++ b/control/gen-fan-zone-defs.py
@@ -327,23 +327,24 @@
     """
     method = {}
     methods = []
-    # Use the first group member for retrieving the type
-    member = eGrps[0]['members'][0]
-    if ('method' in eTrig) and \
-       (eTrig['method'] is not None):
-        # Add method parameters
-        eMethod = next(m for m in events['methods']
-                       if m['name'] == eTrig['method'])
-        method['method'] = eMethod['name']
-        method['mparams'] = getParameters(
-            member, eGrps, eMethod, events)
+    if (len(eGrps) > 0):
+        # Use the first group member for retrieving the type
+        member = eGrps[0]['members'][0]
+        if ('method' in eTrig) and \
+           (eTrig['method'] is not None):
+            # Add method parameters
+            eMethod = next(m for m in events['methods']
+                           if m['name'] == eTrig['method'])
+            method['method'] = eMethod['name']
+            method['mparams'] = getParameters(
+                member, eGrps, eMethod, events)
 
-        # Add handler parameters
-        eHandler = next(h for h in events['handlers']
-                        if h['name'] == eTrig['handler'])
-        method['handler'] = eHandler['name']
-        method['hparams'] = getParameters(
-            member, eGrps, eHandler, events)
+            # Add handler parameters
+            eHandler = next(h for h in events['handlers']
+                            if h['name'] == eTrig['handler'])
+            method['handler'] = eHandler['name']
+            method['hparams'] = getParameters(
+                member, eGrps, eHandler, events)
 
     methods.append(method)
 
@@ -494,10 +495,7 @@
     event = {}
 
     # Add set speed event groups
-    grps = getGroups(zone_num, zone_conditions, e, events_data)
-    if not grps:
-        return
-    event['groups'] = grps
+    event['groups'] = getGroups(zone_num, zone_conditions, e, events_data)
 
     # Add optional set speed actions and function parameters
     event['action'] = []
@@ -534,10 +532,10 @@
     """
     precond = {}
     # Add set speed event precondition group
-    grps = getGroups(zNum, zCond, event['precondition'], events_data)
-    if not grps:
-        return
-    precond['pcgrps'] = grps
+    precond['pcgrps'] = getGroups(zNum,
+                                  zCond,
+                                  event['precondition'],
+                                  events_data)
 
     # Add set speed event precondition actions
     pc = []
