diff --git a/Code/Mantid/MantidQt/CustomInterfaces/inc/MantidQtCustomInterfaces/SANSRunWindow.h b/Code/Mantid/MantidQt/CustomInterfaces/inc/MantidQtCustomInterfaces/SANSRunWindow.h
index b27a11398a9fac1c41d6b061c544fc1c9f424266..e9db170ed8e1e50f9e6483f78f2c0ecd307337df 100644
--- a/Code/Mantid/MantidQt/CustomInterfaces/inc/MantidQtCustomInterfaces/SANSRunWindow.h
+++ b/Code/Mantid/MantidQt/CustomInterfaces/inc/MantidQtCustomInterfaces/SANSRunWindow.h
@@ -211,6 +211,7 @@ private:
   /// Destroy a zero error free cloned workspace
   void deleteZeroErrorFreeClone(QString& clonedWorkspaceName);
 
+
 private slots:
   /// phi masking has changed 
   void phiMaskingChanged();
diff --git a/Code/Mantid/MantidQt/CustomInterfaces/src/SANSRunWindow.cpp b/Code/Mantid/MantidQt/CustomInterfaces/src/SANSRunWindow.cpp
index 461b9d7f44e807d04022335a40971a9ef8f71faa..d736e88a105b0abcb82a97a7bf970e1e3263b052 100644
--- a/Code/Mantid/MantidQt/CustomInterfaces/src/SANSRunWindow.cpp
+++ b/Code/Mantid/MantidQt/CustomInterfaces/src/SANSRunWindow.cpp
@@ -435,6 +435,11 @@ void SANSRunWindow::saveWorkspacesDialog()
   // Connect the request for deleting a zero-error-free workspace
   connect(m_saveWorkspaces, SIGNAL(deleteZeroErrorFreeWorkspace(QString&)),
          this, SLOT(deleteZeroErrorFreeClone(QString&) ));
+  // Connect to change in the zero-error removal checkbox
+  connect(m_uiForm.zeroErrorCheckBox, SIGNAL(stateChanged(int)),
+          m_saveWorkspaces, SLOT(onSaveAsZeroErrorFreeChanged(int)));
+
+
   m_uiForm.saveSel_btn->setEnabled(false);
   m_saveWorkspaces->show();
 }
@@ -2800,6 +2805,17 @@ void SANSRunWindow::handleDefSaveClick()
     QMessageBox::warning(this, "Filename required", "A filename must be entered into the text box above to save this file");
   }
 
+  // If we save with a zero-error-free correction we need to swap the 
+  QString workspaceNameBuffer = m_outputWS;
+  if (m_uiForm.zeroErrorCheckBox->isChecked()) {
+    QString clonedWorkspaceName = m_outputWS + "_cloned_temp";
+    createZeroErrorFreeClone(m_outputWS, clonedWorkspaceName);
+    if (AnalysisDataService::Instance().doesExist(clonedWorkspaceName.toStdString())) {
+      m_outputWS = clonedWorkspaceName;
+    }
+  }
+
+
   const QStringList algs(getSaveAlgs());
   QString saveCommand;
   for(QStringList::const_iterator alg = algs.begin(); alg != algs.end(); ++alg)
@@ -2847,6 +2863,14 @@ void SANSRunWindow::handleDefSaveClick()
 
   saveCommand += "print 'success'\n";
   QString result = runPythonCode(saveCommand).trimmed();
+
+  // Revert changes and delete the zero-free workspace
+  if (this->m_uiForm.zeroErrorCheckBox->isChecked()) {
+    deleteZeroErrorFreeClone(m_outputWS);
+  }
+  m_outputWS = workspaceNameBuffer;
+
+
   if ( result != "success" )
   {
     QMessageBox::critical(this, "Error saving workspace", "Problem encountered saving workspace, does it still exist. There may be more information in the results console?");
@@ -3866,6 +3890,7 @@ void SANSRunWindow::deleteZeroErrorFreeClone(QString& clonedWorkspaceName) {
   }
 }
 
+
 } //namespace CustomInterfaces
 
 } //namespace MantidQt
diff --git a/Code/Mantid/MantidQt/MantidWidgets/inc/MantidQtMantidWidgets/SaveWorkspaces.h b/Code/Mantid/MantidQt/MantidWidgets/inc/MantidQtMantidWidgets/SaveWorkspaces.h
index 6217561df5dd9bc4be444967489e0f1409a77ffb..24224bdb6bcf6b6d3bbdcf411fd87e6e6e005419 100644
--- a/Code/Mantid/MantidQt/MantidWidgets/inc/MantidQtMantidWidgets/SaveWorkspaces.h
+++ b/Code/Mantid/MantidQt/MantidWidgets/inc/MantidQtMantidWidgets/SaveWorkspaces.h
@@ -52,6 +52,8 @@ namespace MantidQt
       void initLayout();
       ///Returns the save extension expected the name algorithm
       static QString getSaveAlgExt(const QString & algName);
+    public slots:
+      void onSaveAsZeroErrorFreeChanged(int state);
 
     signals:
       void closing();
diff --git a/Code/Mantid/MantidQt/MantidWidgets/src/SaveWorkspaces.cpp b/Code/Mantid/MantidQt/MantidWidgets/src/SaveWorkspaces.cpp
index 058a4755df946948d662501dca13ffa761cc2dab..346ab744f29e154517b10ff2bd2a0ac6b61e02fe 100644
--- a/Code/Mantid/MantidQt/MantidWidgets/src/SaveWorkspaces.cpp
+++ b/Code/Mantid/MantidQt/MantidWidgets/src/SaveWorkspaces.cpp
@@ -424,3 +424,15 @@ void SaveWorkspaces::removeZeroFreeWorkspaces(QHash<QString, QString> workspaces
     emit deleteZeroErrorFreeWorkspace((*it));
   }
 }
+
+/**
+ * Reacts to a user change wether the workspace is to be saved as zero-error-free or not
+ * @param state :: 0 if we don't save with the zero-error correction, otherwise anything else
+ */
+void SaveWorkspaces::onSaveAsZeroErrorFreeChanged(int state) {
+  if (state == 0) {
+    m_saveAsZeroErrorFree = false;
+  } else {
+    m_saveAsZeroErrorFree = true;
+  }
+}