diff --git a/VERSION b/VERSION
index 6eac4a65cde9135c747b7d858a570e928a1f7b5d..8975db9a0503618f74bdeddba1ddf1f24119fb9c 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-292
\ No newline at end of file
+293
\ No newline at end of file
diff --git a/lib/+artoa/+controller/+edit/+offsets/buttonCopyFloatOffsets.m b/lib/+artoa/+controller/+edit/+offsets/buttonCopyFloatOffsets.m
new file mode 100644
index 0000000000000000000000000000000000000000..d90225c757a961b5af86c04eb583e28a164363ac
--- /dev/null
+++ b/lib/+artoa/+controller/+edit/+offsets/buttonCopyFloatOffsets.m
@@ -0,0 +1,47 @@
+function [] = buttonCopyFloatOffsets(~, ~)
+%UNTITLED Summary of this function goes here
+%   Detailed explanation goes here
+
+global artoaWorkspace artoaGui;
+
+%% Save Applied state
+artoa.controller.edit.offsets.saveAppliedState();
+
+%% Get selected index
+index = artoaGui.editOffsets.comboboxFloatOffsetToApplied.Value;
+
+%% Copy selected offset columns to Applied columns
+appliedOffsetColumn = 'AppliedOffset';
+appliedDriftColumn = 'AppliedDrift';
+appliedSoundspeedColumn = 'AppliedSoundspeed';
+
+switch artoaGui.editOffsets.comboboxFloatOffsetToApplied.String{index}
+    case 'Measured'
+        offsetColumn = 'OffsetStart';
+        driftColumn = 'Drift';
+        soundspeedColumn = 'MeasuredSoundspeed';
+    case 'Empirical'
+        offsetColumn = 'EmpiricalOffset';
+        driftColumn = 'EmpiricalDrift';
+        soundspeedColumn = 'EmpiricalSoundspeed';
+    case 'Optimum'
+        offsetColumn = 'OptimumTotalOffset';
+        driftColumn = 'OptimumTotalDrift';
+        soundspeedColumn = 'OptimumSoundspeed';
+end
+
+artoaWorkspace.editOffsets.offsets{1, appliedOffsetColumn} = ...
+    artoaWorkspace.editOffsets.offsets{1, offsetColumn};
+artoaWorkspace.editOffsets.offsets{1, appliedDriftColumn} = ...
+    artoaWorkspace.editOffsets.offsets{1, driftColumn};
+artoaWorkspace.editOffsets.offsets{1, appliedSoundspeedColumn} = ...
+    artoaWorkspace.editOffsets.offsets{1, soundspeedColumn};
+
+%% Update GUI
+artoa.controller.edit.offsets.updateGui();
+
+%% Recalculate
+artoa.controller.edit.recalculateToaGpsAndPlot();
+
+end
+
diff --git a/lib/+artoa/+controller/+edit/+offsets/buttonCopyOffsets.m b/lib/+artoa/+controller/+edit/+offsets/buttonCopyOffsets.m
index d6fa8b829c1e5f7cfd514f413dbb6ab6864864b0..86937753a9901f037f227e82b42474a59093020d 100644
--- a/lib/+artoa/+controller/+edit/+offsets/buttonCopyOffsets.m
+++ b/lib/+artoa/+controller/+edit/+offsets/buttonCopyOffsets.m
@@ -8,34 +8,47 @@ global artoaWorkspace artoaGui;
 artoa.controller.edit.offsets.saveAppliedState();
 
 %% Get selected index
-index = artoaGui.editOffsets.comboboxOffsetToApplied.Value;
+index = artoaGui.editOffsets.comboboxSoundsourcesToApplied.Value;
 
 %% Copy selected offset columns to Applied columns
 appliedOffsetColumn = 'AppliedOffset';
 appliedDriftColumn = 'AppliedDrift';
+appliedSoundspeedColumn = 'AppliedSoundspeed';
 
-switch artoaGui.editOffsets.comboboxOffsetToApplied.String{index}
+switch artoaGui.editOffsets.comboboxSoundsourcesToApplied.String{index}
     case 'Measured'
         offsetIndicesToCopy = true(size(artoaWorkspace.editOffsets.offsets{:, appliedOffsetColumn}));
         driftIndicesToCopy = true(size(artoaWorkspace.editOffsets.offsets{:, appliedDriftColumn}));
+        soundspeedIndicesToCopy = true(size(artoaWorkspace.editOffsets.offsets{:, appliedSoundspeedColumn}));
         offsetColumn = 'OffsetStart';
         driftColumn = 'Drift';
+        soundspeedColumn = 'MeasuredSoundspeed';
     case 'Empirical'
         offsetIndicesToCopy = true(size(artoaWorkspace.editOffsets.offsets{:, appliedOffsetColumn}));
         driftIndicesToCopy = true(size(artoaWorkspace.editOffsets.offsets{:, appliedDriftColumn}));
+        soundspeedIndicesToCopy = true(size(artoaWorkspace.editOffsets.offsets{:, appliedSoundspeedColumn}));
         offsetColumn = 'EmpiricalOffset';
         driftColumn = 'EmpiricalDrift';
+        soundspeedColumn = 'EmpiricalSoundspeed';
     case 'Optimum'
         offsetIndicesToCopy = isnan(artoaWorkspace.editOffsets.offsets{:, appliedOffsetColumn});
         driftIndicesToCopy = isnan(artoaWorkspace.editOffsets.offsets{:, appliedDriftColumn});
+        soundspeedIndicesToCopy = isnan(artoaWorkspace.editOffsets.offsets{:, appliedSoundspeedColumn});
         offsetColumn = 'OptimumTotalOffset';
         driftColumn = 'OptimumTotalDrift';
+        soundspeedColumn = 'OptimumSoundspeed';
 end
 
+offsetIndicesToCopy(1) = false;
+driftIndicesToCopy(1) = false;
+soundspeedIndicesToCopy(1) = false;
+
 artoaWorkspace.editOffsets.offsets{offsetIndicesToCopy, appliedOffsetColumn} = ...
     artoaWorkspace.editOffsets.offsets{offsetIndicesToCopy, offsetColumn};
 artoaWorkspace.editOffsets.offsets{driftIndicesToCopy, appliedDriftColumn} = ...
     artoaWorkspace.editOffsets.offsets{driftIndicesToCopy, driftColumn};
+artoaWorkspace.editOffsets.offsets{soundspeedIndicesToCopy, appliedSoundspeedColumn} = ...
+    artoaWorkspace.editOffsets.offsets{soundspeedIndicesToCopy, soundspeedColumn};
 
 %% Update GUI
 artoa.controller.edit.offsets.updateGui();
diff --git a/lib/+artoa/+controller/+edit/+offsets/buttonCopySoundspeed.m b/lib/+artoa/+controller/+edit/+offsets/buttonCopySoundspeed.m
deleted file mode 100644
index beb934fbce11c4711b20083ecd6bd0833e624535..0000000000000000000000000000000000000000
--- a/lib/+artoa/+controller/+edit/+offsets/buttonCopySoundspeed.m
+++ /dev/null
@@ -1,25 +0,0 @@
-function [] = buttonCopySoundspeed(~, ~)
-%BUTTONCOPYSOUNDSPEED Summary of this function goes here
-%   Detailed explanation goes here
-
-global artoaGui artoaWorkspace;
-
-%% Get selected index
-index = artoaGui.editOffsets.comboboxSoundvelocityToApplied.Value;
-
-%% Soundspeed 
-
-artoaWorkspace.editOffsets.offsets{:, 'AppliedSoundspeed'} = ...
-    artoaWorkspace.editOffsets.offsets{ ...
-        :, ...
-        [artoaGui.editOffsets.comboboxSoundvelocityToApplied.String{index} 'Soundspeed'] ...
-        };
-    
-%% Update GUI
-artoa.controller.edit.offsets.updateGui();
-
-%% Recalculate
-artoa.controller.edit.recalculateToaGpsAndPlot();
-
-end
-
diff --git a/lib/+artoa/+controller/+main/open.m b/lib/+artoa/+controller/+main/open.m
index f4153c616dd2376159dc941f7b2685feab929255..09f1672079916d2ab4c02e92e1f7a088a0627a4e 100644
--- a/lib/+artoa/+controller/+main/open.m
+++ b/lib/+artoa/+controller/+main/open.m
@@ -59,8 +59,8 @@ callbacks.tableSoundspeedEdit = @artoa.controller.edit.offsets.tableSoundspeedEd
 callbacks.buttonCalculateOffsets = @artoa.controller.edit.offsets.buttonCalculateOffsets;
 callbacks.checkboxUseOffsets = @artoa.controller.edit.offsets.checkboxUseOffsets;
 callbacks.inputSoundspeed = @artoa.controller.edit.offsets.inputSoundspeed;
-callbacks.buttonCopyOffsets = @artoa.controller.edit.offsets.buttonCopyOffsets;
-callbacks.buttonCopySoundvelocity = @artoa.controller.edit.offsets.buttonCopySoundspeed;
+callbacks.buttonCopyFloatOffsets = @artoa.controller.edit.offsets.buttonCopyFloatOffsets;
+callbacks.buttonCopySoundsourcesOffsets = @artoa.controller.edit.offsets.buttonCopyOffsets;
 callbacks.buttonUndoLastCopy = @artoa.controller.edit.offsets.buttonUndoLastCopy;
 callbacks.buttonAppliedToNan = @artoa.controller.edit.offsets.buttonAppliedToNan;
 
diff --git a/lib/+artoa/+gui/main.m b/lib/+artoa/+gui/main.m
index 72a9b92facecb7ab71b3fc16982d3f1692e69ec5..1f06976db9509d961f3323b432a6811f873b0f6e 100644
--- a/lib/+artoa/+gui/main.m
+++ b/lib/+artoa/+gui/main.m
@@ -47,8 +47,8 @@ availableCallbacks = { ...
     'tableSoundsourceOffsetsEdit', ...
     'buttonCalculateOffsets', ...
     'checkboxUseOffsets', ...
-    'buttonCopyOffsets', ...
-    'buttonCopySoundvelocity', ...
+    'buttonCopyFloatOffsets', ...
+    'buttonCopySoundsourcesOffsets', ...
     'buttonAppliedToNan', ...
     'buttonUndoLastCopy' ...
 };
@@ -613,16 +613,16 @@ artoaGui.editOffsets.checkboxUseOffsets = uicontrol( ...
     'CallBack', pCallbacks.checkboxUseOffsets ...
 );
 
-artoaGui.editOffsets.textOffsetToApplied = uicontrol( ...
+artoaGui.editOffsets.textFloatOffsetToApplied = uicontrol( ...
     'Parent', artoaGui.editOffsets.frameOptimumOffsets, ...
-    'String', 'Copy', ...
+    'String', 'Float', ...
     'Style', 'text', ...
     'FontSize', 8, ...
     'Units', 'normalized', ...
     'Position', [(1.5*left + 4*fullwidth/8) .725 fullwidth/8 .2] ...
 );
 
-artoaGui.editOffsets.comboboxOffsetToApplied = uicontrol( ...
+artoaGui.editOffsets.comboboxFloatOffsetToApplied = uicontrol( ...
     'Parent', artoaGui.editOffsets.frameOptimumOffsets, ...
     'String', pOffsetsToCopy, ...
     'Style', 'popupmenu', ...
@@ -631,27 +631,27 @@ artoaGui.editOffsets.comboboxOffsetToApplied = uicontrol( ...
     'Position', [(1.5*left + 5*fullwidth/8) .725 2*fullwidth/8 .2] ...
 );
 
-artoaGui.editOffsets.buttonCopyOffsets = uicontrol( ...
+artoaGui.editOffsets.buttonCopyFloatOffsets = uicontrol( ...
     'Parent', artoaGui.editOffsets.frameOptimumOffsets, ...
     'String', 'to Applied', ...
     'Style', 'PushButton', ...
     'FontSize', 8, ...
     'Units', 'normalized', ...
     'Position', [(1.5*left + 7*fullwidth/8) .725 fullwidth/8 .2], ...
-    'CallBack', pCallbacks.buttonCopyOffsets ...
+    'CallBack', pCallbacks.buttonCopyFloatOffsets ...
 );
 
 
-artoaGui.editOffsets.textSoundvelocityToApplied = uicontrol( ...
+artoaGui.editOffsets.textSoundsourcesToApplied = uicontrol( ...
     'Parent', artoaGui.editOffsets.frameOptimumOffsets, ...
-    'String', 'Soundvelocity', ...
+    'String', 'Soundsources', ...
     'Style', 'text', ...
     'FontSize', 8, ...
     'Units', 'normalized', ...
     'Position', [(1.5*left + 4*fullwidth/8) .5 fullwidth/8 .2] ...
 );
 
-artoaGui.editOffsets.comboboxSoundvelocityToApplied = uicontrol( ...
+artoaGui.editOffsets.comboboxSoundsourcesToApplied = uicontrol( ...
     'Parent', artoaGui.editOffsets.frameOptimumOffsets, ...
     'String', pSoundvelocityToCopy, ...
     'Style', 'popupmenu', ...
@@ -660,14 +660,14 @@ artoaGui.editOffsets.comboboxSoundvelocityToApplied = uicontrol( ...
     'Position', [(1.5*left + 5*fullwidth/8) .5 2*fullwidth/8 .2] ...
 );
 
-artoaGui.editOffsets.buttonCopySoundvelocity = uicontrol( ...
+artoaGui.editOffsets.buttonCopySoundsourcesOffsets = uicontrol( ...
     'Parent', artoaGui.editOffsets.frameOptimumOffsets, ...
     'String', 'to Applied', ...
     'Style', 'PushButton', ...
     'FontSize', 8, ...
     'Units', 'normalized', ...
     'Position', [(1.5*left + 7*fullwidth/8) .5 fullwidth/8 .2], ...
-    'CallBack', pCallbacks.buttonCopySoundvelocity ...
+    'CallBack', pCallbacks.buttonCopySoundsourcesOffsets ...
 );
 
 artoaGui.editOffsets.buttonAppliedToNan = uicontrol( ...