diff --git a/Code/Mantid/Framework/Crystal/src/OptimizeLatticeForCellType.cpp b/Code/Mantid/Framework/Crystal/src/OptimizeLatticeForCellType.cpp
index be243b08acc21c6826b8d31399bc8264bc76966c..434eefbeb1e601f53c8e91eac5d5002204d769e2 100644
--- a/Code/Mantid/Framework/Crystal/src/OptimizeLatticeForCellType.cpp
+++ b/Code/Mantid/Framework/Crystal/src/OptimizeLatticeForCellType.cpp
@@ -101,9 +101,7 @@ namespace Mantid
       int edge 		= this->getProperty("EdgePixels");
       std::string cell_type = getProperty("CellType");
       DataObjects::PeaksWorkspace_sptr ws = getProperty("PeaksWorkspace");
-      std::string outputdir = getProperty("OutputDirectory");
-      if (outputdir[outputdir.size()-1] != '/')
-        outputdir += "/";
+
       std::vector<DataObjects::PeaksWorkspace_sptr> runWS;
 
       for (int i= int(ws->getNumberPeaks())-1; i>=0; --i)
@@ -309,19 +307,25 @@ namespace Mantid
 			  alg->executeAsChildAlg();
 		  }
 		  AnalysisDataService::Instance().remove("_peaks");
-		  // Save Peaks
-		  Mantid::API::IAlgorithm_sptr savePks_alg = createChildAlgorithm("SaveIsawPeaks");
-		  savePks_alg->setPropertyValue("InputWorkspace", runWS[i_run]->getName());
-		  savePks_alg->setProperty("Filename", outputdir + "ls"+runWS[i_run]->getName()+".integrate");
-		  savePks_alg->executeAsChildAlg();
-		  g_log.notice() <<"See output file: " << outputdir + "ls"+runWS[i_run]->getName()+".integrate" << "\n";
-		  // Save UB
-		  Mantid::API::IAlgorithm_sptr saveUB_alg = createChildAlgorithm("SaveIsawUB");
-		  saveUB_alg->setPropertyValue("InputWorkspace", runWS[i_run]->getName());
-		  saveUB_alg->setProperty("Filename", outputdir + "ls"+runWS[i_run]->getName()+".mat");
-		  saveUB_alg->executeAsChildAlg();
-		  // Show the names of files written
-		  g_log.notice() <<"See output file: " << outputdir + "ls"+runWS[i_run]->getName()+".mat" << "\n";
+		  if ( perRun)
+		  {
+		      std::string outputdir = getProperty("OutputDirectory");
+		      if (outputdir[outputdir.size()-1] != '/')
+		        outputdir += "/";
+			  // Save Peaks
+			  Mantid::API::IAlgorithm_sptr savePks_alg = createChildAlgorithm("SaveIsawPeaks");
+			  savePks_alg->setPropertyValue("InputWorkspace", runWS[i_run]->getName());
+			  savePks_alg->setProperty("Filename", outputdir + "ls"+runWS[i_run]->getName()+".integrate");
+			  savePks_alg->executeAsChildAlg();
+			  g_log.notice() <<"See output file: " << outputdir + "ls"+runWS[i_run]->getName()+".integrate" << "\n";
+			  // Save UB
+			  Mantid::API::IAlgorithm_sptr saveUB_alg = createChildAlgorithm("SaveIsawUB");
+			  saveUB_alg->setPropertyValue("InputWorkspace", runWS[i_run]->getName());
+			  saveUB_alg->setProperty("Filename", outputdir + "ls"+runWS[i_run]->getName()+".mat");
+			  saveUB_alg->executeAsChildAlg();
+			  // Show the names of files written
+			  g_log.notice() <<"See output file: " << outputdir + "ls"+runWS[i_run]->getName()+".mat" << "\n";
+		  }
       }
     }
     //-----------------------------------------------------------------------------------------
diff --git a/Code/Mantid/Framework/Crystal/src/SelectCellOfType.cpp b/Code/Mantid/Framework/Crystal/src/SelectCellOfType.cpp
index 6d353e48262a7cd53e739a0e5ad58419514d3adc..b39113de7629a782931229130496a6a222711387 100644
--- a/Code/Mantid/Framework/Crystal/src/SelectCellOfType.cpp
+++ b/Code/Mantid/Framework/Crystal/src/SelectCellOfType.cpp
@@ -100,6 +100,9 @@ namespace Crystal
 
     this->declareProperty(new PropertyWithValue<double>( "AverageError", 0.0,
           Direction::Output), "The average HKL indexing error if apply==true.");
+
+    this->declareProperty( "AllowPermutations", true,
+                            "Allow permutations of conventional cells" );
   }
 
   //--------------------------------------------------------------------------
@@ -129,9 +132,10 @@ namespace Crystal
     std::string centering = this->getProperty("Centering");
     bool   apply          = this->getProperty("Apply");
     double tolerance      = this->getProperty("Tolerance");
+    bool   allowPermutations        = this->getProperty("AllowPermutations");
 
     std::vector<ConventionalCell> list = 
-                          ScalarUtils::GetCells( UB, cell_type, centering );
+                          ScalarUtils::GetCells( UB, cell_type, centering, allowPermutations );
 
     ConventionalCell info = ScalarUtils::GetCellBestError( list, true );
 
diff --git a/Code/Mantid/Framework/Crystal/src/SelectCellWithForm.cpp b/Code/Mantid/Framework/Crystal/src/SelectCellWithForm.cpp
index 2f107819dc1b3755fa9b97387039bdc500ffa999..8332b9d49b5ffb327648c5ce306181ae4ce44f6b 100644
--- a/Code/Mantid/Framework/Crystal/src/SelectCellWithForm.cpp
+++ b/Code/Mantid/Framework/Crystal/src/SelectCellWithForm.cpp
@@ -83,7 +83,7 @@ namespace Crystal
     this->declareProperty(new PropertyWithValue<double>( "AverageError", 0.0,
           Direction::Output), "The average HKL indexing error if apply==true.");
 
-    this->declareProperty( "AllowPermutations", false,
+    this->declareProperty( "AllowPermutations", true,
                             "Allow permutations of conventional cells" );
   }
 
diff --git a/Code/Mantid/Framework/Crystal/src/ShowPossibleCells.cpp b/Code/Mantid/Framework/Crystal/src/ShowPossibleCells.cpp
index 7ccb803581195a4f0ed927be735b2c6a96446463..0fc69e18ba6f5d3159b634652e120ddd376e3d5a 100644
--- a/Code/Mantid/Framework/Crystal/src/ShowPossibleCells.cpp
+++ b/Code/Mantid/Framework/Crystal/src/ShowPossibleCells.cpp
@@ -74,7 +74,7 @@ namespace Crystal
           new PropertyWithValue<int>( "NumberOfCells", 0,
           Direction::Output), "Gets set with the number of possible cells.");
 
-    this->declareProperty( "AllowPermutations", false,
+    this->declareProperty( "AllowPermutations", true,
                             "Allow permutations of conventional cells" );
   }
 
diff --git a/Code/Mantid/MantidQt/CustomInterfaces/inc/MantidQtCustomInterfaces/MantidEV.ui b/Code/Mantid/MantidQt/CustomInterfaces/inc/MantidQtCustomInterfaces/MantidEV.ui
index b522cd7f8ccea2bdd30298b2423c75c3c0e38311..6bfc0442db092e3153ff314908871aa4df8bed74 100644
--- a/Code/Mantid/MantidQt/CustomInterfaces/inc/MantidQtCustomInterfaces/MantidEV.ui
+++ b/Code/Mantid/MantidQt/CustomInterfaces/inc/MantidQtCustomInterfaces/MantidEV.ui
@@ -57,7 +57,7 @@
       <string/>
      </property>
      <property name="currentIndex">
-      <number>0</number>
+      <number>3</number>
      </property>
      <widget class="QWidget" name="SelectData">
       <property name="sizePolicy">
@@ -616,8 +616,8 @@
            <rect>
             <x>0</x>
             <y>0</y>
-            <width>372</width>
-            <height>330</height>
+            <width>903</width>
+            <height>708</height>
            </rect>
           </property>
           <layout class="QVBoxLayout" name="verticalLayout_10">
@@ -1823,8 +1823,8 @@
            <rect>
             <x>0</x>
             <y>0</y>
-            <width>345</width>
-            <height>280</height>
+            <width>903</width>
+            <height>708</height>
            </rect>
           </property>
           <layout class="QVBoxLayout" name="verticalLayout_14">
@@ -1924,6 +1924,36 @@
              </item>
             </layout>
            </item>
+           <item>
+            <layout class="QHBoxLayout" name="horizontalLayout_351">
+             <item>
+              <spacer name="horizontalSpacer_371">
+               <property name="orientation">
+                <enum>Qt::Horizontal</enum>
+               </property>
+               <property name="sizeType">
+                <enum>QSizePolicy::Fixed</enum>
+               </property>
+               <property name="sizeHint" stdset="0">
+                <size>
+                 <width>15</width>
+                 <height>0</height>
+                </size>
+               </property>
+              </spacer>
+             </item>
+             <item>
+              <widget class="QCheckBox" name="AllowPermutations_ckbx">
+               <property name="toolTip">
+                <string>Allow permutations of conventional cells.</string>
+               </property>
+               <property name="text">
+                <string>Allow Permutations</string>
+               </property>
+              </widget>
+             </item>
+            </layout>
+           </item>
            <item>
             <widget class="QRadioButton" name="SelectCellOfType_rbtn">
              <property name="toolTip">
@@ -2378,8 +2408,8 @@
            <rect>
             <x>0</x>
             <y>0</y>
-            <width>389</width>
-            <height>188</height>
+            <width>903</width>
+            <height>708</height>
            </rect>
           </property>
           <layout class="QVBoxLayout" name="verticalLayout_16">
@@ -2632,8 +2662,8 @@
            <rect>
             <x>0</x>
             <y>0</y>
-            <width>606</width>
-            <height>635</height>
+            <width>903</width>
+            <height>708</height>
            </rect>
           </property>
           <layout class="QVBoxLayout" name="verticalLayout_17">
diff --git a/Code/Mantid/MantidQt/CustomInterfaces/inc/MantidQtCustomInterfaces/MantidEVWorker.h b/Code/Mantid/MantidQt/CustomInterfaces/inc/MantidQtCustomInterfaces/MantidEVWorker.h
index 3aab0ab919ce3976ad0b5492f96effe08986ce74..af3a2a596b9f7a586c39a05f0975e6e6e2f02ab6 100644
--- a/Code/Mantid/MantidQt/CustomInterfaces/inc/MantidQtCustomInterfaces/MantidEVWorker.h
+++ b/Code/Mantid/MantidQt/CustomInterfaces/inc/MantidQtCustomInterfaces/MantidEVWorker.h
@@ -129,7 +129,8 @@ public:
   /// Show the possible conventional cells for a Niggli cell
   bool showCells( const std::string & peaks_ws_name,
                         double        max_scalar_error,
-                        bool          best_only );
+                        bool          best_only,
+                        bool          allow_perm);
 
   /// Select conventional cell using the cell type and centering
   bool selectCellOfType( const std::string & peaks_ws_name,
diff --git a/Code/Mantid/MantidQt/CustomInterfaces/src/MantidEV.cpp b/Code/Mantid/MantidQt/CustomInterfaces/src/MantidEV.cpp
index 160385ddb29f1cb19ca39eb7b54bb50fc0e1d6f3..12e730113c93f845e337af4abc2c69cff1ad69de 100644
--- a/Code/Mantid/MantidQt/CustomInterfaces/src/MantidEV.cpp
+++ b/Code/Mantid/MantidQt/CustomInterfaces/src/MantidEV.cpp
@@ -476,6 +476,7 @@ void MantidEV::setDefaultState_slot()
    m_uiForm.ShowPossibleCells_rbtn->setChecked(true);
    m_uiForm.MaxScalarError_ledt->setText("0.2");
    m_uiForm.BestCellOnly_ckbx->setChecked(true);
+   m_uiForm.AllowPermutations_ckbx->setChecked(true);
    m_uiForm.SelectCellOfType_rbtn->setChecked(false);
    m_uiForm.CellType_cmbx->setCurrentIndex(0);
    m_uiForm.CellCentering_cmbx->setCurrentIndex(0);
@@ -1029,10 +1030,11 @@ void MantidEV::chooseCell_slot()
    if ( show_cells )
    {
      bool best_only          = m_uiForm.BestCellOnly_ckbx->isChecked();
+     bool allow_perm          = m_uiForm.AllowPermutations_ckbx->isChecked();
      double max_scalar_error = 0;
      if ( !getPositiveDouble( m_uiForm.MaxScalarError_ledt, max_scalar_error ) )
        return;
-     if ( !worker->showCells( peaks_ws_name, max_scalar_error, best_only ) )
+     if ( !worker->showCells( peaks_ws_name, max_scalar_error, best_only, allow_perm ) )
      {
        errorMessage("Failed to Show Conventional Cells");
      }
@@ -1727,6 +1729,7 @@ void MantidEV::setEnabledShowCellsParams_slot( bool on )
   m_uiForm.MaxScalarError_lbl->setEnabled( on );
   m_uiForm.MaxScalarError_ledt->setEnabled( on );
   m_uiForm.BestCellOnly_ckbx->setEnabled( on );
+  m_uiForm.AllowPermutations_ckbx->setEnabled( on );
 }
 
 
@@ -2078,6 +2081,7 @@ void MantidEV::saveSettings( const std::string & filename )
   state->setValue("ShowPossibleCells_rbtn",m_uiForm.ShowPossibleCells_rbtn->isChecked());
   state->setValue("MaxScalarError_ledt",m_uiForm.MaxScalarError_ledt->text());
   state->setValue("BestCellOnly_ckbx",m_uiForm.BestCellOnly_ckbx->isChecked());
+  state->setValue("BestCellOnly_ckbx",m_uiForm.AllowPermutations_ckbx->isChecked());
   state->setValue("SelectCellOfType_rbtn",m_uiForm.SelectCellOfType_rbtn->isChecked());
   state->setValue("CellType_cmbx",m_uiForm.CellType_cmbx->currentIndex());
   state->setValue("CellCentering_cmbx",m_uiForm.CellCentering_cmbx->currentIndex());
@@ -2190,6 +2194,7 @@ void MantidEV::loadSettings( const std::string & filename )
   restore( state, "ShowPossibleCells_rbtn", m_uiForm.ShowPossibleCells_rbtn );
   restore( state, "MaxScalarError_ledt", m_uiForm.MaxScalarError_ledt );
   restore( state, "BestCellOnly_ckbx", m_uiForm.BestCellOnly_ckbx );
+  restore( state, "AllowPermutations_ckbx", m_uiForm.AllowPermutations_ckbx );
   restore( state, "SelectCellOfType_rbtn", m_uiForm.SelectCellOfType_rbtn );
   restore( state, "CellType_cmbx", m_uiForm.CellType_cmbx );
   restore( state, "CellCentering_cmbx", m_uiForm.CellCentering_cmbx );
diff --git a/Code/Mantid/MantidQt/CustomInterfaces/src/MantidEVWorker.cpp b/Code/Mantid/MantidQt/CustomInterfaces/src/MantidEVWorker.cpp
index 8119135550aad58e4471795221afe3d06812db8e..0cba832b97f19448f1f25cf4cb021a12722ce7c8 100644
--- a/Code/Mantid/MantidQt/CustomInterfaces/src/MantidEVWorker.cpp
+++ b/Code/Mantid/MantidQt/CustomInterfaces/src/MantidEVWorker.cpp
@@ -614,12 +614,16 @@ bool MantidEVWorker::indexPeaksWithUB( const std::string & peaks_ws_name,
  *                           is allowed for a possible cell to be listed.
  *  @param best_only         If true, only the best fitting cell of any
  *                           particular type will be displayed.
+ *  @param allow_perm        If true, permutations are used to find the
+ *                           best fitting cell of any
+ *                           particular type.
  *
  *  @return true if the ShowPossibleCells algorithm completes successfully.
  */
 bool MantidEVWorker::showCells( const std::string & peaks_ws_name,
                                       double        max_scalar_error,
-                                      bool          best_only )
+                                      bool          best_only,
+                                      bool          allow_perm)
 {
   if ( !isPeaksWorkspace( peaks_ws_name ) )
     return false;
@@ -628,6 +632,7 @@ bool MantidEVWorker::showCells( const std::string & peaks_ws_name,
   alg->setProperty("PeaksWorkspace",peaks_ws_name);
   alg->setProperty("MaxScalarError",max_scalar_error);
   alg->setProperty("BestOnly",best_only);
+  alg->setProperty("AllowPermutations",allow_perm);
 
   if ( alg->execute() )
     return true;
diff --git a/Code/Mantid/scripts/SCD_Reduction/ReduceSCD.config b/Code/Mantid/scripts/SCD_Reduction/ReduceSCD.config
index 7f3d6a0b343743c5ac338f4c9da70c7d9c741c1f..67b5014828afe4eb8502b3a4816760b39390420c 100644
--- a/Code/Mantid/scripts/SCD_Reduction/ReduceSCD.config
+++ b/Code/Mantid/scripts/SCD_Reduction/ReduceSCD.config
@@ -90,11 +90,12 @@ UseFirstLattice  True
 # .integrate file, and will combine, re-index and convert to a conventional
 # cell, so these can usually be left as None.
 #
-# Cell trnasformation is not applied to cylindrical profiles, 
+# Cell transformation is not applied to cylindrical profiles, 
 # i.e. use None if cylindrical integration is used!
 #
 cell_type     None
 centering     None
+allow_perm    True
 
 #
 # Number of peaks to find, per run, both for getting the UB matrix,
diff --git a/Code/Mantid/scripts/SCD_Reduction/ReduceSCD_OneRun.py b/Code/Mantid/scripts/SCD_Reduction/ReduceSCD_OneRun.py
index fb1aae072322513733dbabc15bf603b7709f05b6..dc3686a284a4265b077754e053a2ef5dbb8a3536 100644
--- a/Code/Mantid/scripts/SCD_Reduction/ReduceSCD_OneRun.py
+++ b/Code/Mantid/scripts/SCD_Reduction/ReduceSCD_OneRun.py
@@ -79,6 +79,7 @@ max_monitor_tof           = params_dictionary[ "max_monitor_tof" ]
 monitor_index             = params_dictionary[ "monitor_index" ] 
 cell_type                 = params_dictionary[ "cell_type" ] 
 centering                 = params_dictionary[ "centering" ]
+allow_perm                = params_dictionary[ "allow_perm" ] 
 num_peaks_to_find         = params_dictionary[ "num_peaks_to_find" ]
 min_d                     = params_dictionary[ "min_d" ]
 max_d                     = params_dictionary[ "max_d" ]
@@ -344,6 +345,7 @@ else:
                                       cell_type + "_" + centering + ".integrate"
     SelectCellOfType( PeaksWorkspace=peaks_ws, 
                       CellType=cell_type, Centering=centering, 
+                      AllowPermutations=allow_perm,
                       Apply=True, Tolerance=tolerance )
     SaveIsawPeaks( InputWorkspace=peaks_ws, AppendFile=False, 
                    Filename=run_conventional_integrate_file )
diff --git a/Code/Mantid/scripts/SCD_Reduction/ReduceSCD_Parallel.py b/Code/Mantid/scripts/SCD_Reduction/ReduceSCD_Parallel.py
index 44116ccddbf48bee1c38822d15023e6a4ccd55d6..68572b5974d8d9c86412e34ba7c007fd855f2b24 100644
--- a/Code/Mantid/scripts/SCD_Reduction/ReduceSCD_Parallel.py
+++ b/Code/Mantid/scripts/SCD_Reduction/ReduceSCD_Parallel.py
@@ -91,6 +91,7 @@ max_d                 = params_dictionary[ "max_d" ]
 tolerance             = params_dictionary[ "tolerance" ]
 cell_type             = params_dictionary[ "cell_type" ] 
 centering             = params_dictionary[ "centering" ]
+allow_perm            = params_dictionary[ "allow_perm" ] 
 run_nums              = params_dictionary[ "run_nums" ]
 
 use_cylindrical_integration = params_dictionary[ "use_cylindrical_integration" ]
@@ -218,7 +219,7 @@ if not use_cylindrical_integration:
     conventional_matrix_file = conv_name + ".mat"
 
     SelectCellOfType( PeaksWorkspace=peaks_ws, CellType=cell_type, Centering=centering,
-                      Apply=True, Tolerance=tolerance )
+                      AllowPermutations=allow_perm, Apply=True, Tolerance=tolerance )
     SaveIsawPeaks( InputWorkspace=peaks_ws, AppendFile=False, Filename=conventional_integrate_file )
     SaveIsawUB( InputWorkspace=peaks_ws, Filename=conventional_matrix_file )