diff --git a/saqc/funcs/generic.py b/saqc/funcs/generic.py
index 8dd387788f51a993eb051e7f3596366f9abce34b..19738b6715cea56f4b13ab5bea4961e891cc2d76 100644
--- a/saqc/funcs/generic.py
+++ b/saqc/funcs/generic.py
@@ -255,7 +255,11 @@ def flag(
     if not np.issubdtype(mask.dtype, np.bool_):
         raise TypeError(f"generic expression does not return a boolean array")
 
-    m = ~_isflagged(flags[field], to_mask) & mask
-    flags[m, field] = flag
+    if field not in flags:
+        flags[field] = pd.Series(data=UNFLAGGED, index=mask.index, name=field)
+
+    mask = ~_isflagged(flags[field], to_mask) & mask
+
+    flags[mask, field] = flag
 
     return data, flags