diff --git a/lib/var_funcs.py b/lib/var_funcs.py
index 889a5f7..35fb594 100644
--- a/lib/var_funcs.py
+++ b/lib/var_funcs.py
@@ -824,7 +824,7 @@
     return True
 
 
-def filter_struct(structure, filter_dict, regex=False):
+def filter_struct(structure, filter_dict, regex=False, invert=False):
     r"""
     Filter the structure by removing any entries that do NOT contain the
     keys/values specified in filter_dict and return the result.
@@ -888,6 +888,10 @@
     regex                           Indicates whether the values in the
                                     filter_dict should be interpreted as
                                     regular expressions.
+    invert                          Invert the results.  Instead of including
+                                    only matching entries in the results,
+                                    include only NON-matching entries in the
+                                    results.
     """
 
     # Convert filter_dict from a string containing a python object definition
@@ -900,7 +904,7 @@
     if type(structure) is list:
         result = []
         for element in structure:
-            if match_struct(element, filter_dict, regex):
+            if match_struct(element, filter_dict, regex) != invert:
                 result.append(element)
     else:
         try:
@@ -908,7 +912,7 @@
         except AttributeError:
             result = DotDict()
         for struct_key, struct_value in structure.items():
-            if match_struct(struct_value, filter_dict, regex):
+            if match_struct(struct_value, filter_dict, regex) != invert:
                 result[struct_key] = struct_value
 
     return result
