From 50af938d0cfb92a86a013e4df7c0af5842e71521 Mon Sep 17 00:00:00 2001
From: David Schaefer <david.schaefer@ufz.de>
Date: Tue, 31 Aug 2021 11:43:28 +0200
Subject: [PATCH] [FIX] generic.flag: don't flag already flagged values

---
 saqc/funcs/generic.py | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/saqc/funcs/generic.py b/saqc/funcs/generic.py
index 6beef3c53..8dd387788 100644
--- a/saqc/funcs/generic.py
+++ b/saqc/funcs/generic.py
@@ -12,7 +12,7 @@ from dios import DictOfSeries
 
 from saqc.constants import GOOD, BAD, UNFLAGGED
 from saqc.core.flags import initFlagsLike, Flags
-from saqc.core.register import flagging, processing, _maskData
+from saqc.core.register import flagging, processing, _maskData, _isflagged
 from saqc.core.visitor import ENVIRONMENT
 
 import operator as op
@@ -255,6 +255,7 @@ def flag(
     if not np.issubdtype(mask.dtype, np.bool_):
         raise TypeError(f"generic expression does not return a boolean array")
 
-    flags[field] = mask.replace({False: UNFLAGGED, True: flag})
+    m = ~_isflagged(flags[field], to_mask) & mask
+    flags[m, field] = flag
 
     return data, flags
-- 
GitLab