diff --git a/saqc/funcs/soil_moisture_tests.py b/saqc/funcs/soil_moisture_tests.py
index 2c58a5206da7158435388420b4b42232392675bf..f9c232940d2310b722185fcff06b31ac0bf8bad9 100644
--- a/saqc/funcs/soil_moisture_tests.py
+++ b/saqc/funcs/soil_moisture_tests.py
@@ -129,7 +129,7 @@ def flagSoilMoistureBySoilFrost(
     """
 
     # retrieve reference series
-    refseries = data[soil_temp_reference]
+    refseries = data[soil_temp_reference].copy()
     ref_use = flagger.isFlagged(
         soil_temp_reference, flag=flagger.GOOD, comparator="=="
     ) | flagger.isFlagged(soil_temp_reference, flag=flagger.UNFLAGGED, comparator="==")
@@ -137,35 +137,14 @@ def flagSoilMoistureBySoilFrost(
     refseries = refseries[ref_use.values]
     # drop nan values from reference series, since those are values you dont want to refer to.
     refseries = refseries.dropna()
-
     # skip further processing if reference series is empty:
     if refseries.empty:
         return data, flagger
 
-    # wrap around df.index.get_loc method, to catch key error in case of empty tolerance window:
-    def _checkNearestForFrost(ref_date, ref_series, tolerance, check_level):
-
-        try:
-            # if there is no reference value within tolerance margin, following line will raise key error and
-            # trigger the exception
-            ref_pos = ref_series.index.get_loc(
-                ref_date, method="nearest", tolerance=tolerance
-            )
-        except KeyError:
-            # since test is not applicable: make no change to flag state
-            return False
-
-        # if reference value index is available, return comparison result (to determine flag)
-        return ref_series[ref_pos] <= check_level
-
-    # make temporal frame holding date index, since df.apply cant access index
-    temp_frame = pd.Series(data.index)
-    # get flagging mask ("True" denotes "bad"="test succesfull")
-    mask = temp_frame.apply(
-        _checkNearestForFrost, args=(refseries, tolerated_deviation, frost_level)
-    )
-    # apply calculated flags
-    flagger = flagger.setFlags(field, mask.values, **kwargs)
+    refseries = refseries.reindex(data[field].dropna().index, method="nearest", tolerance=tolerated_deviation)
+    refseries = refseries[refseries < frost_level].index
+
+    flagger = flagger.setFlags(field, refseries, **kwargs)
     return data, flagger
 
 
@@ -236,9 +215,8 @@ def flagSoilMoistureByPrecipitationEvents(
     :param ignore_missing:
     """
 
-    dataseries, moist_rate = retrieveTrustworthyOriginal(data, field, flagger)
 
-    # data harmonized: refseries, ref_rate = retrieveTrustworthyOriginal(data, prec_reference, flagger)
+    dataseries, moist_rate = retrieveTrustworthyOriginal(data, field, flagger)
 
     # data not hamronized:
     refseries = data[prec_reference].dropna()
@@ -249,7 +227,7 @@ def flagSoilMoistureByPrecipitationEvents(
         return data, flagger
 
     refseries = refseries.reindex(refseries.index.join(dataseries.index, how='outer'))
-    # get 24 h prec. monitor (this makes last-24h-rainfall-evaluation independent from preceeding entries)
+    # get 24 h prec. monitor
     prec_count = refseries.rolling(window="1D").sum()
     # exclude data not signifying a raise::
     if raise_reference is None:
diff --git a/test/funcs/test_soil_moisture_tests.py b/test/funcs/test_soil_moisture_tests.py
index 2f5c4f06211a204b7a3eb7bcb12296a7f40c29c1..0c8257fe368f895d9ee4856fe0df724fbbcee67f 100644
--- a/test/funcs/test_soil_moisture_tests.py
+++ b/test/funcs/test_soil_moisture_tests.py
@@ -58,6 +58,3 @@ def test_flagSoilMoisturePrecipitationEvents(flagger):
     test_sum = (flag_result[flag_assertion] == flagger.BAD).sum()
     assert test_sum == len(flag_assertion)
 
-if __name__ == "__main__":
-    flagger = TESTFLAGGER[2]
-    test_flagSoilMoisturePrecipitationEvents(flagger)