diff --git a/notebooks/Jungfrau/Jungfrau_dark_analysis_all_gains_burst_mode_NBC.ipynb b/notebooks/Jungfrau/Jungfrau_dark_analysis_all_gains_burst_mode_NBC.ipynb
index 49b57db8ce59a19afa7dfd85fd0dbd2edf0098fe..90041343d75eca15c76e4590077a2fd767aaa536 100644
--- a/notebooks/Jungfrau/Jungfrau_dark_analysis_all_gains_burst_mode_NBC.ipynb
+++ b/notebooks/Jungfrau/Jungfrau_dark_analysis_all_gains_burst_mode_NBC.ipynb
@@ -116,6 +116,7 @@
     "    JungfrauGainMode.FIX_GAIN_1.value, JungfrauGainMode.FIX_GAIN_2.value]\n",
     "dynamic_settings = [\n",
     "    JungfrauGainMode.FORCE_SWITCH_HG1.value, JungfrauGainMode.FORCE_SWITCH_HG2.value]\n",
+    "old_fixed_settings = [\"fixgain1\", \"fixgain2\"]\n",
     "\n",
     "creation_time = None\n",
     "if use_dir_creation_date:\n",
@@ -196,14 +197,14 @@
     "if med_low_settings == [None, None]:\n",
     "    print(\"WARNING: run.settings is not stored in the data to read. \"\n",
     "          f\"Hence assuming gain_mode = {gain_mode} for adaptive old data.\")\n",
-    "elif med_low_settings == [\"dynamic\", \"forceswitchg1\"]:\n",
+    "elif med_low_settings == [\"dynamicgain\", \"forceswitchg1\"]:\n",
     "    print(f\"WARNING: run.settings for medium and low gain runs are wrong {med_low_settings}. \"\n",
     "          f\"This is an expected bug for old raw data. Setting gain_mode to {gain_mode}.\")\n",
     "# Validate that low_med_settings is not a mix of adaptive and fixed settings.\n",
-    "elif not (sorted(med_low_settings) in [fixed_settings, dynamic_settings]):  # noqa\n",
+    "elif not (sorted(med_low_settings) in [fixed_settings, dynamic_settings, old_fixed_settings]):  # noqa\n",
     "    raise ValueError(\n",
     "        \"Medium and low run settings are not as expected. \"\n",
-    "        f\"Either {dynamic_settings} or {fixed_settings} are expected.\\n\"\n",
+    "        f\"Either {dynamic_settings}, {fixed_settings}, or {old_fixed_settings} are expected.\\n\"\n",
     "        f\"Got {sorted(med_low_settings)} for both runs, respectively.\")\n",
     "\n",
     "print(f\"Gain mode is {gain_mode} ({med_low_settings})\")\n",
diff --git a/src/cal_tools/enums.py b/src/cal_tools/enums.py
index 7f50f388b9153f84d6f41a8050cecfd1eed77127..eeebf151d8582255a1f66ce77a3c58c303590a7b 100644
--- a/src/cal_tools/enums.py
+++ b/src/cal_tools/enums.py
@@ -55,7 +55,6 @@ class JungfrauSettings(Enum):
 
 class JungfrauGainMode(Enum):
     """Jungfrau run gain mode."""
-    # old setting, new setting, new mode
     DYNAMIC = "dynamic"
     FIX_GAIN_1 = "fixg1"
     FIX_GAIN_2 = "fixg2"
diff --git a/src/cal_tools/jungfraulib.py b/src/cal_tools/jungfraulib.py
index 363d438319ddf613f1ff97052f52e45dfbc774bb..fdfdb0bd571099514de806dbbcc69674e4cdf63e 100644
--- a/src/cal_tools/jungfraulib.py
+++ b/src/cal_tools/jungfraulib.py
@@ -5,7 +5,7 @@ import extra_data
 from cal_tools.enums import JungfrauGainMode, JungfrauSettings
 
 
-def _old_settings_to_new(settings, index):
+def _old_settings_to_new(settings: str, index: int) -> str:
     """At the end of 2022, there is a sls update.
     - `settings.value` values was updated from 6 possible values to only 2.
     - `gainMode.value` dataset was created with 5 possible values.
@@ -43,24 +43,22 @@ class JungfrauCtrl():
         self.run_settings = self._get_settings()
         self.run_mode = self._get_mode()
 
-    def _get_settings(self) -> Optional[str]:
+    def _get_settings(self) -> str:
         """Get JUNGFRAU run settings and mode."""
         try:
-            settings = self.run_dc.get_run_value(self.ctrl_src, "settings")
-            if settings not in [m.value for m in JungfrauSettings]:
-                _old_settings_to_new(settings, 0)
-            return settings
+            return self.run_dc.get_run_value(self.ctrl_src, "settings")
         except extra_data.PropertyNameError:
             print("\'settings.value\' key "
-                  "is not available for this run.")
+                  "is not available for this run. "
+                  "`run_settings` is set to `dynamicgain`")
+            return "dynamicgain"  # old data are set to `dynamicgain`.
 
-    def _get_mode(self) -> Optional[str]:
+    def _get_mode(self) -> str:
         """Get run mode from `gainMode` dataset."""
         try:
             return self.run_dc.get_run_value(self.ctrl_src, "gainMode")
         except extra_data.PropertyNameError:
-            if self.run_settings is not None:
-                return _old_settings_to_new(self.run_settings, 1)
+            return self.run_settings
 
     def get_memory_cells(self) -> Tuple[int, int]:
         n_storage_cells = int(self.run_dc.get_run_value(
@@ -88,7 +86,14 @@ class JungfrauCtrl():
         - `1` if run_settings = highgain0.
         - `0` if run_settings = gain0 or None.
         """
-        if self.run_settings == JungfrauSettings.HIGH_GAIN_0:
+        # Check if `run_settings` is of an old settings value
+        # to convert into new settings value.
+        if self.run_settings in [s.value for s in JungfrauSettings]:
+            settings = self.run_settings
+        else:
+            settings = _old_settings_to_new(self.run_settings, 0)
+
+        if settings == JungfrauSettings.HIGH_GAIN_0.value:
             return 1
         else:  # JungfrauSettings.GAIN_0
             return 0
@@ -98,7 +103,14 @@ class JungfrauCtrl():
         - `0` if run_mode = dynamic, forceswitchg1, forceswitchg2, or None.
         - `1` if run_mode = fixg1 or fixg2.
         """
-        if self.run_mode in [
+        # Check if run_mode is of an old settings to convert
+        # into new mode value.
+        if self.run_mode in [m.value for m in JungfrauGainMode]:
+            mode = self.run_mode
+        else:
+            mode = _old_settings_to_new(self.run_mode, 1)
+        
+        if mode in [
             JungfrauGainMode.FIX_GAIN_1.value,
             JungfrauGainMode.FIX_GAIN_2.value,
         ]:
diff --git a/tests/test_jungfraulib.py b/tests/test_jungfraulib.py
index 76c9d43f5eebdbf5cd8bdf4d36c1702d3d719bd1..eb7580ad72beaf422871516340648c754b59eaa1 100644
--- a/tests/test_jungfraulib.py
+++ b/tests/test_jungfraulib.py
@@ -1,33 +1,47 @@
 import pytest
+from extra_data import RunDirectory
 
-from cal_tools.jungfraulib import _old_settings_to_new
+from cal_tools.jungfraulib import JungfrauCtrl
+
+# TODO: replace with mocked RAW data as in tests/test_agipdlib.py
+JF = JungfrauCtrl(
+    run_dc=RunDirectory("/gpfs/exfel/exp/CALLAB/202130/p900203/raw/r9031/"),
+    ctrl_src="FXE_XAD_JF1M/DET/CONTROL",
+    )
 
 
 @pytest.mark.parametrize(
     'settings,result',
     [
-        ('dynamicgain', 'gain0'),
-        ('dynamichg0', 'highgain0'),
-        ('fixgain1', 'gain0'),
-        ('fixgain2', 'gain0'),
-        ('forceswitchg1', 'gain0'),
-        ('forceswitchg2', 'gain0'),
+        ('dynamicgain', 0),
+        ('dynamichg0', 1),
+        ('fixgain1', 0),
+        ('fixgain2', 0),
+        ('forceswitchg1', 0),
+        ('forceswitchg2', 0),
+        ('gain0', 0),
+        ('highgain0', 1),
         ],
     )
-def test_old_settings_to_new_settings(settings, result):
-    assert _old_settings_to_new(settings, 0) == result
+def test_get_gain_setting(settings, result):
+    JF.run_settings = settings
+    assert JF.get_gain_setting() == result
 
 
 @pytest.mark.parametrize(
-    'settings,result',
+    'mode,result',
     [
-        ('dynamicgain', 'dynamic'),
-        ('dynamichg0', 'dynamic'),
-        ('fixgain1', 'fixg1'),
-        ('fixgain2', 'fixg2'),
-        ('forceswitchg1', 'forceswitchg1'),
-        ('forceswitchg2', 'forceswitchg2'),
+        ('dynamicgain', 0),
+        ('dynamichg0', 0),
+        ('fixgain1', 1),
+        ('fixgain2', 1),
+        ('forceswitchg1', 0),
+        ('forceswitchg2', 0),
+        ('dynamic', 0),
+        ('fixg1', 1),
+        ('fixg2', 1),
         ],
     )
-def test_old_settings_to_new_mode(settings, result):
-    assert _old_settings_to_new(settings, 1) == result
+def test_get_gain_mode(mode, result):
+    JF.run_mode = mode
+    assert JF.get_gain_mode() == result