diff --git a/scripts/Diffraction/isis_powder/gem.py b/scripts/Diffraction/isis_powder/gem.py
index efa851e31ac177f3d97f27fee9af394c1c065252..68e7e0b349b4f8ea8c9b22d32e135d10ff4c5070 100644
--- a/scripts/Diffraction/isis_powder/gem.py
+++ b/scripts/Diffraction/isis_powder/gem.py
@@ -44,6 +44,7 @@ class Gem(AbstractInst):
                                      do_absorb_corrections=self._inst_settings.do_absorb_corrections)
 
     def create_cal(self, **kwargs):
+        print(hasattr(self._inst_settings, "calibration_to_adjust"))
         self._switch_texture_mode_specific_inst_settings(kwargs.get("texture_mode"))
         self._inst_settings.update_attributes(kwargs=kwargs)
         self._inst_settings.update_attributes(advanced_config=gem_advanced_config.get_calibration_variables())
@@ -58,8 +59,17 @@ class Gem(AbstractInst):
                                        "Step": self._inst_settings.get_det_offsets_step,
                                        "XMin": self._inst_settings.get_det_offsets_x_min,
                                        "XMax": self._inst_settings.get_det_offsets_x_max}
-
-        return gem_calibration_algs.create_calibration(calibration_runs=self._inst_settings.run_number,
+        if hasattr(self._inst_settings, "calibration_to_adjust"):
+            return gem_calibration_algs.create_calibration(calibration_runs=self._inst_settings.run_number,
+                                                           instrument=self,
+                                                           offset_file_name=run_details.offset_file_path,
+                                                           grouping_file_name=run_details.grouping_file_path,
+                                                           calibration_dir=self._inst_settings.calibration_dir,
+                                                           rebin_1_params=self._inst_settings.cal_rebin_1,
+                                                           rebin_2_params=self._inst_settings.cal_rebin_2,
+                                                           cross_correlate_params=cross_correlate_params,
+                                                           get_det_offset_params=get_detector_offsets_params)
+        return gem_calibration_algs.adjust_calibration(calibration_runs=self._inst_settings.run_number,
                                                        instrument=self,
                                                        offset_file_name=run_details.offset_file_path,
                                                        grouping_file_name=run_details.grouping_file_path,
@@ -67,7 +77,8 @@ class Gem(AbstractInst):
                                                        rebin_1_params=self._inst_settings.cal_rebin_1,
                                                        rebin_2_params=self._inst_settings.cal_rebin_2,
                                                        cross_correlate_params=cross_correlate_params,
-                                                       get_det_offset_params=get_detector_offsets_params)
+                                                       get_det_offset_params=get_detector_offsets_params,
+                                                       original_cal =self._inst_settings.cal_adjust)
 
     def set_sample_details(self, **kwargs):
         kwarg_name = "sample"
diff --git a/scripts/Diffraction/isis_powder/gem_routines/gem_advanced_config.py b/scripts/Diffraction/isis_powder/gem_routines/gem_advanced_config.py
index 5039665eeded09d06b8fc0a1ef75bb27c49d2bed..7e59abb1ba6e4546208579d5e36dad697f15bd86 100644
--- a/scripts/Diffraction/isis_powder/gem_routines/gem_advanced_config.py
+++ b/scripts/Diffraction/isis_powder/gem_routines/gem_advanced_config.py
@@ -111,7 +111,7 @@ texture_mode_off ={"focused_cropping_values": focused_cropping_values,
 
 calibration_params = {
     "create_cal_rebin_1_params": "100,-0.0006,19950",
-    "create_cal_rebin_2_params": "1,0.002,1.3",
+    "create_cal_rebin_2_params": "1.05,0.002,1.3",
     "create_cal_cross_correlate_params": {
         "cross_corr_reference_spectra": 5000,
         "cross_corr_ws_index_min": 11,
diff --git a/scripts/Diffraction/isis_powder/gem_routines/gem_calibration_algs.py b/scripts/Diffraction/isis_powder/gem_routines/gem_calibration_algs.py
index bfd316acb74d0c5954ef0dfcf4add31b38a6ce4d..c5c31ffcf88b9212734d701a22aa446082498dd3 100644
--- a/scripts/Diffraction/isis_powder/gem_routines/gem_calibration_algs.py
+++ b/scripts/Diffraction/isis_powder/gem_routines/gem_calibration_algs.py
@@ -1,5 +1,6 @@
 from __future__ import (absolute_import, division, print_function)
 
+import csv
 import os
 import mantid.simpleapi as mantid
 import isis_powder.routines.common as common
@@ -24,9 +25,44 @@ def create_calibration(calibration_runs, instrument, offset_file_name, grouping_
                                                            input_batching=INPUT_BATCHING.Summed)
 
     input_ws = input_ws_list[0]
-    calibration_ws = mantid.Rebin(InputWorkspace=input_ws, Params=rebin_1_params)
+    focused = _calibration_processing(calibration_dir, calibration_runs, cross_correlate_params, get_det_offset_params,
+                                     grouping_file_name, input_ws, instrument, offset_file_name, rebin_1_params,
+                                     rebin_2_params)
+    return focused
+
+
+def adjust_calibration(calibration_runs, instrument, offset_file_name, grouping_file_name, calibration_dir,
+                       rebin_1_params, rebin_2_params, cross_correlate_params, get_det_offset_params, original_cal):
+    """
+    Create a calibration file from (usually) a ceria run
+    :param calibration_runs: Run number(s) for this run
+    :param instrument: The GEM instrument object
+    :param offset_file_name: Name of the file to write detector offset information to
+    :param grouping_file_name: Name of grouping calibration file
+    :param calibration_dir: Path to directory containing calibration information
+    :param rebin_1_params: Parameters for the first rebin step (as a string in the usual format)
+    :param rebin_2_params: Parameters for the second rebin step (as a string in the usual format)
+    :param cross_correlate_params: Parameters for CrossCorrelate (as a dictionary PropertyName: PropertyValue)
+    :param get_det_offset_params: Parameters for GetDetectorOffsets (as a dictionary PropertyName: PropertyValue)
+    """
+    input_ws_list = common.load_current_normalised_ws_list(run_number_string=calibration_runs, instrument=instrument,
+                                                           input_batching=INPUT_BATCHING.Summed)
+
+    input_ws = input_ws_list[0]
+    input_ws = mantid.AlignDetectors(InputWorkspace=input_ws, CalibrationFile=original_cal)
+    offset_file = os.path.join(calibration_dir, offset_file_name)
+    focused = _calibration_processing(calibration_dir, calibration_runs, cross_correlate_params, get_det_offset_params,
+                                     grouping_file_name, input_ws, instrument, offset_file, rebin_1_params,
+                                     rebin_2_params)
+    _adjust_cal_file(original_cal, offset_file)
+    return focused
 
+
+def _calibration_processing(calibration_dir, calibration_runs, cross_correlate_params, get_det_offset_params,
+                           grouping_file_name, input_ws, instrument, offset_file, rebin_1_params, rebin_2_params):
+    calibration_ws = input_ws
     if calibration_ws.getAxis(0).getUnit().unitID() != WORKSPACE_UNITS.d_spacing:
+        calibration_ws = mantid.Rebin(InputWorkspace=input_ws, Params=rebin_1_params)
         calibration_ws = mantid.ConvertUnits(InputWorkspace=calibration_ws, Target="dSpacing")
     spectrum_list = []
     for i in range(0, calibration_ws.getNumberHistograms()):
@@ -39,23 +75,36 @@ def create_calibration(calibration_runs, instrument, offset_file_name, grouping_
             spectrum_list.append(i)
     calibration_ws = mantid.ExtractSpectra(InputWorkspace=calibration_ws, WorkspaceIndexList=spectrum_list)
     rebinned = mantid.Rebin(InputWorkspace=calibration_ws, Params=rebin_2_params)
-
     cross_correlated = mantid.CrossCorrelate(InputWorkspace=rebinned, **cross_correlate_params)
 
-    offset_file = os.path.join(calibration_dir, offset_file_name)
     # Offsets workspace must be referenced as string so it can be deleted, as simpleapi doesn't recognise it as a ws
     offsets_ws_name = "offsets"
     mantid.GetDetectorOffsets(InputWorkspace=cross_correlated, GroupingFileName=offset_file,
                               OutputWorkspace=offsets_ws_name, **get_det_offset_params)
-
     rebinned_tof = mantid.ConvertUnits(InputWorkspace=rebinned, Target="TOF")
     aligned = mantid.AlignDetectors(InputWorkspace=rebinned_tof, CalibrationFile=offset_file)
-
     grouping_file = os.path.join(calibration_dir, grouping_file_name)
     focused = mantid.DiffractionFocussing(InputWorkspace=aligned, GroupingFileName=grouping_file,
                                           OutputWorkspace=instrument._generate_output_file_name(calibration_runs)
-                                          + "_grouped")
+                                                          + "_grouped")
     print("Saved cal file to " + offset_file)
-    common.remove_intermediate_workspace([calibration_ws, rebinned, cross_correlated, rebinned_tof, aligned,
+    common.remove_intermediate_workspace([calibration_ws, rebinned, cross_correlated, rebinned_tof,
                                           offsets_ws_name])
     return focused
+
+
+def _adjust_cal_file(original_cal, generated_cal):
+    origin_ws = "origin{}"
+    gen_ws = "newCal{}"
+    out_ws = "adjusted_cal"
+    mantid.LoadCalFile(InstrumentName="Gem", MakeGroupingWorkspace=False, MakeMaskWorkspace=False,
+                       MakeOffsetsWorkspace=True, WorkspaceName=origin_ws.format(''), CalFilename=original_cal)
+    mantid.LoadCalFile(InstrumentName="Gem", MakeGroupingWorkspace=False, MakeMaskWorkspace=False,
+                       MakeOffsetsWorkspace=True, WorkspaceName=gen_ws.format(''), CalFilename=generated_cal)
+    mantid.Plus(LHSWorkspace=origin_ws.format("_offsets"), RHSWorkspace=gen_ws.format("_offsets"),
+                OutputWorkspace=out_ws)
+    mantid.SaveCalFile(OffsetsWorkspace=out_ws, Filename=generated_cal)
+    common.remove_intermediate_workspace([origin_ws.format("_offsets"), gen_ws.format("_offsets"),
+                                          origin_ws.format("_cal"), gen_ws.format("_cal")])
+
+
diff --git a/scripts/Diffraction/isis_powder/gem_routines/gem_param_mapping.py b/scripts/Diffraction/isis_powder/gem_routines/gem_param_mapping.py
index 58f16cd25823403c08f83ea889f00b8f36ecfe06..b0aa3cd085cce00bde2f5443853e910733d99562 100644
--- a/scripts/Diffraction/isis_powder/gem_routines/gem_param_mapping.py
+++ b/scripts/Diffraction/isis_powder/gem_routines/gem_param_mapping.py
@@ -13,6 +13,7 @@ from isis_powder.routines.common_enums import INPUT_BATCHING, WORKSPACE_UNITS
 #                 Maps friendly user name (ext_name) -> script name (int_name)
 attr_mapping = \
     [
+     ParamMapEntry(ext_name="calibration_to_adjust",     int_name="cal_adjust", optional=True),
      ParamMapEntry(ext_name="calibration_directory",     int_name="calibration_dir"),
      ParamMapEntry(ext_name="calibration_mapping_file",  int_name="cal_mapping_path"),
      ParamMapEntry(ext_name="config_file",               int_name="config_file"),