diff --git a/Code/Mantid/Framework/DataObjects/inc/MantidDataObjects/PeaksWorkspace.h b/Code/Mantid/Framework/DataObjects/inc/MantidDataObjects/PeaksWorkspace.h
index 847c6145a157e8ba21d6ecf8359b8998084c27a2..7c080bdf0504cccc554589b9b1f8d2d66e038ebd 100644
--- a/Code/Mantid/Framework/DataObjects/inc/MantidDataObjects/PeaksWorkspace.h
+++ b/Code/Mantid/Framework/DataObjects/inc/MantidDataObjects/PeaksWorkspace.h
@@ -354,8 +354,8 @@ class DLLExport PeaksWorkspace: public DataObjects::TableWorkspace
      void    removeAllPeaks();
 
 
-     bool   addColumn   (   const std::string &      type,
-                     const std::string &    name
+     bool   addColumn   (   const std::string &      /*type*/,
+                     const std::string &   /* name*/
       ) {return false;}
 
      static const int IhklCol =0;  /** Column number where V3D hkl value is stored*/
diff --git a/Code/Mantid/Framework/DataObjects/src/PeaksWorkspace.cpp b/Code/Mantid/Framework/DataObjects/src/PeaksWorkspace.cpp
index 781b7e5a0695e6ed5d8ecd64f781bc6cb180c2eb..22b04b37206f0630e7de5e55a4db4264fd61c684 100644
--- a/Code/Mantid/Framework/DataObjects/src/PeaksWorkspace.cpp
+++ b/Code/Mantid/Framework/DataObjects/src/PeaksWorkspace.cpp
@@ -106,10 +106,10 @@ namespace DataObjects
        C_version = std::string( version );
        C_experimentDate = Kernel::DateAndTime( experimentDate);
        ClearDeleteCalibrationData();
-       for( int i=0; i<PanelNames.size() ; i++)
+       for( size_t i=0; i<PanelNames.size() ; i++)
          DetNames.push_back( std::string(PanelNames[i]));
 
-       for( int i=0; i<PanelInfo.size(); i++)
+       for( size_t i=0; i<PanelInfo.size(); i++)
        {
          double* data = PanelInfo[i];
          double* data1 = new double[15];
@@ -158,7 +158,7 @@ namespace DataObjects
   {
     int i = rowCount();
     insertRow( i );
-    double T = time;
+    //double T = time;
 
     try
     {
@@ -1087,7 +1087,8 @@ namespace DataObjects
        {
          int Reflag = getReflag( i );
          int unitsDig =  Reflag %10;
-         Geometry::V3D hkl= UBI*get_hkl(i);
+         Geometry::V3D hkl= UBI*get_QXtal(i);
+
          double h_low = hkl.X()-floor(hkl.X());
          double k_low = hkl.Y()-floor( hkl.Y());
          double l_low = hkl.Z()-floor( hkl.Z());
@@ -1096,6 +1097,7 @@ namespace DataObjects
              (l_low <tolerance || (1-l_low)<tolerance ))
            {
              sethkl( hkl, i);
+
              Reflag = (Reflag /100)+10*reflag + unitsDig;
            }
          else
diff --git a/Code/Mantid/Framework/DataObjects/test/PeaksWorkspaceTest.h b/Code/Mantid/Framework/DataObjects/test/PeaksWorkspaceTest.h
index 85f3420f75bb2077146cee729c78312322f50b2e..f70bda0fc504cfddbef5f602e2a6e3c6fe49abf3 100644
--- a/Code/Mantid/Framework/DataObjects/test/PeaksWorkspaceTest.h
+++ b/Code/Mantid/Framework/DataObjects/test/PeaksWorkspaceTest.h
@@ -13,6 +13,7 @@
 #include "MantidDataObjects/PeaksWorkspace.h"
 #include "MantidGeometry/V3D.h"
 #include "MantidKernel/Strings.h"
+#include "MantidKernel/PhysicalConstants.h"
 
 using namespace Mantid::DataObjects;
 using namespace Mantid::API;
@@ -99,10 +100,10 @@ public:
     TS_ASSERT_LESS_THAN(hkl.norm(),.00001);
     TS_ASSERT( save==pw.get_hkl(6));
 
-    double pi = 3.1415926535897932384626433832795;
+
     V3D position =pw.getPosition(6);
     V3D ptest;
-    ptest.spherical(.45647,1.3748*180/pi,2.52165*180/pi);
+    ptest.spherical(.45647,1.3748*180/M_PI,2.52165*180/M_PI);
     V3D psave(position);
 
     position -=ptest;
@@ -128,7 +129,7 @@ public:
     V3D sampOrient = pw.getSampleOrientation(6);
     V3D soSave(sampOrient);
     V3D soTest(164.96,45,0);
-    soTest *=pi/180;
+    soTest *=M_PI/180;
     sampOrient -=soTest;
     TS_ASSERT_LESS_THAN( sampOrient.norm(), .001);
     TS_ASSERT( soSave ==pw.getSampleOrientation(6) );
@@ -139,8 +140,6 @@ public:
 
     TS_ASSERT_LESS_THAN( abs(1/.5203-pw.get_Qmagnitude(6)),.004);
 
-    //unrot Q (ISAW)= 1.1155452(beam) , 0.55290407(back) , 1.4642019(up)
-    //getQ  not adjusted for samp orient -1.220807(beam) , -1.2082262(back) , 0.8624681(up)
 
     V3D Qlab= pw.get_Qlab(6);
  //  McStas==back,up,beam
@@ -150,10 +149,51 @@ public:
 
     V3D QlabR= pw.get_QXtal(6);
      //  McStas==back,up,beam
+    V3D QlabRSave = V3D(QlabR);
     V3D QlabRTest(.55290407,1.4642019,1.1155452);
      QlabR -=QlabRTest;
      TS_ASSERT_LESS_THAN( QlabR.norm(), .001);
 
+     Matrix<double> mat(3,3);
+       int beam =2;
+       int up =1;
+       int back =0;
+       int base1=0;
+       int base2 = 1;
+       int base3 =2;
+       mat[beam][base1]=-0.36622801;
+       mat[back][base1]=-0.17730089;
+       mat[up][base1]=-0.29209167;
+       mat[beam][base2]=-0.52597409;
+       mat[back][base2]=0.20688301;
+       mat[up][base2]=0.00279823;
+       mat[beam][base3]=-0.15912011;
+       mat[back][base3]=0.36190018;
+       mat[up][base3]=-0.28579932;
+
+      pw.sethkls( mat, .1, false, 1);
+      Matrix<double>matSave = Matrix<double>(mat);
+      mat.Invert();
+      QlabRSave = pw.get_QXtal(6);
+
+      V3D hklD =  (mat*QlabRSave)-pw.get_hkl(6);
+      TS_ASSERT_LESS_THAN( hklD.norm() ,.001);
+      TS_ASSERT_EQUALS( pw.getReflag(6),10);
+
+      pw.sethkls( matSave, .1, true, 2);
+      hklD =  (mat*QlabRSave)-pw.get_hkl(6);
+      TS_ASSERT_LESS_THAN( hklD.norm() ,.001);
+      TS_ASSERT_EQUALS( pw.getReflag(6),10);
+
+
+      pw.sethkls( matSave, .01, false, 1);
+      TS_ASSERT_EQUALS( pw.get_hkl(6).norm(),0);
+      TS_ASSERT_EQUALS( pw.getReflag(6),0);
+
+      pw.sethkls( matSave, .1, true, 2);
+      hklD =  (mat*QlabRSave)-pw.get_hkl(6);
+      TS_ASSERT_LESS_THAN( hklD.norm() ,.001);
+      TS_ASSERT_EQUALS( pw.getReflag(6),20);
 
      //Now test out the various sets. Not all sets are possible.
      V3D testV(3,5,-6);
@@ -188,6 +228,7 @@ public:
      TS_ASSERT_EQUALS( pw.get_time_channel(6) , 200);
 
 
+
   }