diff --git a/saqc/core/register.py b/saqc/core/register.py
index 9607bebe309d18cfc28b7d0e316d23e29d8f1e6a..1f11250eaa7244d972d64a973fca3e746c9598f4 100644
--- a/saqc/core/register.py
+++ b/saqc/core/register.py
@@ -375,7 +375,7 @@ def _restoreFlags(flags: Flags, old_state: CallState):
         squeezed = flags.history[c].max(raw=True)
 
         # nothing to update
-        if history.empty or (squeezed == UNTOUCHED).all():
+        if history.empty:
             continue
 
         out.history[c] = out.history[c].append(squeezed, force=True, meta=meta)
diff --git a/saqc/funcs/curvefit.py b/saqc/funcs/curvefit.py
index 406728dba32e397451d3dd0e792d163b8bd8cc5a..5487ce7b95833b751568c94034fd4afdae861a86 100644
--- a/saqc/funcs/curvefit.py
+++ b/saqc/funcs/curvefit.py
@@ -111,6 +111,7 @@ def fitPolynomial(
     """
     # TODO: some (rater large) parts are functional similar to saqc.funcs.rolling.roll
     if data[field].empty:
+        flags[:, field] = UNTOUCHED
         return data, flags
     data = data.copy()
     to_fit = data[field]
diff --git a/saqc/funcs/drift.py b/saqc/funcs/drift.py
index 4431ab8321aae1f79477e420e0f24eb65965fc42..688f2441a0c64ace3eeae2ae38a793b4dfeef472 100644
--- a/saqc/funcs/drift.py
+++ b/saqc/funcs/drift.py
@@ -458,6 +458,7 @@ def correctDrift(
     """
     # 1: extract fit intervals:
     if data[maint_data_field].empty:
+        flags[:, field] = UNTOUCHED
         return data, flags
 
     data = data.copy()
diff --git a/saqc/funcs/outliers.py b/saqc/funcs/outliers.py
index 6f0094ef5320991d800ceaab0a63eca7a3c100a2..93242cbba125ce3101d230617d0e3d8bfa22dfbd 100644
--- a/saqc/funcs/outliers.py
+++ b/saqc/funcs/outliers.py
@@ -79,6 +79,7 @@ def flagByStray(
     scores = data[field].dropna()
 
     if scores.empty:
+        flags[:, field] = UNTOUCHED
         return data, flags
 
     if not partition_freq:
@@ -676,6 +677,7 @@ def flagRaise(
         raise_series = raise_series.apply(raise_check, args=(thresh,), raw=True)
 
     if raise_series.isna().all():
+        flags[:, field] = UNTOUCHED
         return data, flags
 
     # "unflag" values of insufficient deviation to their predecessors
@@ -783,6 +785,7 @@ def flagMAD(
     """
     d = data[field]
     if d.empty:
+        flags[:, field] = UNTOUCHED
         return data, flags
 
     median = d.rolling(window=window, closed="both").median()
@@ -879,6 +882,7 @@ def flagOffset(
     """
     dataseries = data[field].dropna()
     if dataseries.empty:
+        flags[:, field] = UNTOUCHED
         return data, flags
 
     # using reverted series - because ... long story.
@@ -911,6 +915,7 @@ def flagOffset(
 
     post_jumps = post_jumps[post_jumps]
     if post_jumps.empty:
+        flags[:, field] = UNTOUCHED
         return data, flags
 
     # get all the entries preceding a significant jump and its successors within "length" range
@@ -1227,6 +1232,7 @@ def flagCrossStatistic(
 
     mask = diff_scores > thresh
     if mask.empty:
+        flags[:, field] = UNTOUCHED
         return data, flags
 
     for var in fields:
diff --git a/saqc/funcs/rolling.py b/saqc/funcs/rolling.py
index 3e23ee7e1ee9b71bf9e88053b96b955f441b9431..20a26cd7bf879036301fd890f1041a77ab50ea1e 100644
--- a/saqc/funcs/rolling.py
+++ b/saqc/funcs/rolling.py
@@ -72,6 +72,7 @@ def roll(
     data = data.copy()
     to_fit = data[field]
     if to_fit.empty:
+        flags[:, field] = UNTOUCHED
         return data, flags
 
     regular = getFreqDelta(to_fit.index)
diff --git a/saqc/funcs/scores.py b/saqc/funcs/scores.py
index fc1d5748abed5bc32dabddcbaae44876141f7feb..85204da0f0e76a23a0b8493a9e36b90942f46d27 100644
--- a/saqc/funcs/scores.py
+++ b/saqc/funcs/scores.py
@@ -123,6 +123,7 @@ def assignKNNScore(
         val_frame = val_frame.transform(trafo)
 
     if val_frame.empty:
+        flags[:, field] = UNTOUCHED
         return data, flags
 
     # partitioning
diff --git a/tests/core/test_reader.py b/tests/core/test_reader.py
index 10c4c048ee04d778907fe9521014c0e774683bc9..cbaec7e0e1905043ea0e12509a45d31268e96a3a 100644
--- a/tests/core/test_reader.py
+++ b/tests/core/test_reader.py
@@ -10,6 +10,7 @@ from pathlib import Path
 from saqc.core.config import Fields as F
 from saqc.core.core import SaQC
 from saqc.core.register import FUNC_MAP, flagging
+from saqc.constants import UNTOUCHED
 
 from tests.common import initData, writeIO
 
@@ -110,6 +111,7 @@ def test_configChecks(data):
 
     @flagging(masking="none")
     def flagFunc(data, field, flags, arg, opt_arg=None, **kwargs):
+        flags[:, field] = UNTOUCHED
         return data, flags
 
     header = f"{F.VARNAME};{F.TEST}"
@@ -135,6 +137,7 @@ def test_supportedArguments(data):
 
     @flagging(masking="field")
     def func(data, field, flags, kwarg, **kwargs):
+        flags[:, field] = UNTOUCHED
         return data, flags
 
     var1 = data.columns[0]