diff --git a/scripts/Diffraction/isis_powder/abstract_inst.py b/scripts/Diffraction/isis_powder/abstract_inst.py
index b79f1764e795c5e3eb0403684a34825f7b6c2801..e4631eb8dfaa22577bb3e5fb912f4f3c380345ca 100644
--- a/scripts/Diffraction/isis_powder/abstract_inst.py
+++ b/scripts/Diffraction/isis_powder/abstract_inst.py
@@ -226,6 +226,13 @@ class AbstractInst(object):
 
     # Steps applicable to all instruments
 
+    @staticmethod
+    def _generate_run_details_fingerprint(*args):
+        out_key = ""
+        for arg in args:
+            out_key += str(arg)
+        return out_key
+
     def _generate_out_file_paths(self, run_details):
         """
         Generates the various output paths and file names to be used during saving or as workspace names
diff --git a/scripts/Diffraction/isis_powder/gem.py b/scripts/Diffraction/isis_powder/gem.py
index 553b1b0e9f4f41ed5754d2e02e0e0f335da49c21..56ded044d800e6c49d102785eb6ec8697dfae47d 100644
--- a/scripts/Diffraction/isis_powder/gem.py
+++ b/scripts/Diffraction/isis_powder/gem.py
@@ -29,7 +29,8 @@ class Gem(AbstractInst):
                                      do_absorb_corrections=self._inst_settings.do_absorb_corrections)
 
     def _get_run_details(self, run_number_string):
-        run_number_string_key = run_number_string + str(self._inst_settings.file_extension)
+        run_number_string_key = self._generate_run_details_fingerprint(run_number_string,
+                                                                       self._inst_settings.file_extension)
         if run_number_string_key in self._cached_run_details:
             return self._cached_run_details[run_number_string_key]
 
diff --git a/scripts/Diffraction/isis_powder/pearl.py b/scripts/Diffraction/isis_powder/pearl.py
index 947b7144b3416a6b859bf907d06860b6ee4c47fd..c70774104fc43904c4b2561ef5d000f58b65d13a 100644
--- a/scripts/Diffraction/isis_powder/pearl.py
+++ b/scripts/Diffraction/isis_powder/pearl.py
@@ -44,7 +44,8 @@ class Pearl(AbstractInst):
                                      do_absorb_corrections=self._inst_settings.absorb_corrections)
 
     def _get_run_details(self, run_number_string):
-        run_number_string_key = run_number_string + str(self._inst_settings.file_extension)
+        run_number_string_key = self._generate_run_details_fingerprint(run_number_string,
+                                                                       self._inst_settings.file_extension)
         if run_number_string_key in self._cached_run_details:
             return self._cached_run_details[run_number_string_key]
 
diff --git a/scripts/Diffraction/isis_powder/polaris.py b/scripts/Diffraction/isis_powder/polaris.py
index b365c8ac351448c22ee39980bdfcaa2085c905d7..7c3d58281bac9959bb1fb5e5cbea6aab2cba3cb1 100644
--- a/scripts/Diffraction/isis_powder/polaris.py
+++ b/scripts/Diffraction/isis_powder/polaris.py
@@ -89,7 +89,8 @@ class Polaris(AbstractInst):
         return self._inst_settings.focused_bin_widths
 
     def _get_run_details(self, run_number_string):
-        run_number_string_key = run_number_string + str(self._inst_settings.file_extension)
+        run_number_string_key = self._generate_run_details_fingerprint(run_number_string,
+                                                                       self._inst_settings.file_extension)
         if run_number_string_key in self._run_details_cached_obj:
             return self._run_details_cached_obj[run_number_string_key]
 
diff --git a/scripts/Diffraction/isis_powder/routines/common_output.py b/scripts/Diffraction/isis_powder/routines/common_output.py
index 02a4fbe5f54f3e9b28c415114ffb1a920c7729cf..9a47c6360804a66289edb49f2d802d84a48267c0 100644
--- a/scripts/Diffraction/isis_powder/routines/common_output.py
+++ b/scripts/Diffraction/isis_powder/routines/common_output.py
@@ -18,9 +18,9 @@ def split_into_tof_d_spacing_groups(run_details, processed_spectra):
     tof_output = []
     run_number = str(run_details.output_run_string)
     ext = run_details.file_extension if run_details.file_extension else ""
-    for name_index, ws in enumerate(processed_spectra):
-        d_spacing_out_name = run_number + ext + "-ResultD-" + str(name_index + 1)
-        tof_out_name = run_number + ext + "-ResultTOF-" + str(name_index + 1)
+    for name_index, ws in enumerate(processed_spectra, start=1):
+        d_spacing_out_name = run_number + ext + "-ResultD-" + str(name_index)
+        tof_out_name = run_number + ext + "-ResultTOF-" + str(name_index)
 
         d_spacing_output.append(mantid.ConvertUnits(InputWorkspace=ws, OutputWorkspace=d_spacing_out_name,
                                                     Target="dSpacing"))
diff --git a/scripts/test/ISISPowderCommonTest.py b/scripts/test/ISISPowderCommonTest.py
index 68ece3c1035ddcaabb8eea6f9035d2add656fe99..c1ad2cea4e3dc4561d6cd253ef8405c8e4f62171 100644
--- a/scripts/test/ISISPowderCommonTest.py
+++ b/scripts/test/ISISPowderCommonTest.py
@@ -474,7 +474,7 @@ class ISISPowderCommonTest(unittest.TestCase):
         returned_ws = common.subtract_summed_runs(ws_to_correct=no_scale_ws, instrument=ISISPowderMockInst(),
                                                   empty_sample_ws_string=sample_empty_number)
         y_values = returned_ws.readY(0)
-        for i in range(0, returned_ws.blocksize()):
+        for i in range(returned_ws.blocksize()):
             self.assertAlmostEqual(y_values[i], 0)
 
         # Check what happens when we specify scale as a half