diff --git a/Framework/Crystal/inc/MantidCrystal/LoadIsawPeaks.h b/Framework/Crystal/inc/MantidCrystal/LoadIsawPeaks.h
index dc8d5c70991ecc3a02eca7ae803aa1c40c7d1086..d8068646e41b91fcddda02265c32430ee1240245 100644
--- a/Framework/Crystal/inc/MantidCrystal/LoadIsawPeaks.h
+++ b/Framework/Crystal/inc/MantidCrystal/LoadIsawPeaks.h
@@ -52,7 +52,7 @@ private:
   /// Read a single peak from peaks file
   DataObjects::Peak readPeak(DataObjects::PeaksWorkspace_sptr outWS,
                              std::string &lastStr, std::ifstream &in,
-                             size_t &seqNum, std::string bankName,
+                             int &seqNum, std::string bankName,
                              double qSign);
 
   int findPixelID(Geometry::Instrument_const_sptr inst, std::string bankName,
diff --git a/Framework/Crystal/inc/MantidCrystal/PredictPeaks.h b/Framework/Crystal/inc/MantidCrystal/PredictPeaks.h
index ebd731fd040f041d95ac057b95c27087ebeeb66c..ebd234354dc242f9b1d6e86505f262af04f76d67 100644
--- a/Framework/Crystal/inc/MantidCrystal/PredictPeaks.h
+++ b/Framework/Crystal/inc/MantidCrystal/PredictPeaks.h
@@ -65,7 +65,7 @@ private:
   void calculateQAndAddToOutput(const Kernel::V3D &hkl,
                                 const Kernel::DblMatrix &orientedUB,
                                 const Kernel::DblMatrix &goniometerMatrix,
-                                size_t &seqNum);
+                                int &seqNum);
 
 private:
   /// Get the predicted detector direction from Q
diff --git a/Framework/Crystal/src/LoadHKL.cpp b/Framework/Crystal/src/LoadHKL.cpp
index db582a338d8c031b0f8f98a87fc2b35084bc4b3a..666562eac9ae71b0910296b9a72c2b5160f4aaf0 100644
--- a/Framework/Crystal/src/LoadHKL.cpp
+++ b/Framework/Crystal/src/LoadHKL.cpp
@@ -85,7 +85,7 @@ void LoadHKL::exec() {
     double wl = std::stod(line.substr(32, 8));
     double tbar, trans, scattering;
     int run, bank;
-    size_t seqNum;
+    int seqNum;
     if (cosines) {
       tbar = std::stod(line.substr(40, 8)); // tbar
       run = std::stoi(line.substr(102, 6));
diff --git a/Framework/Crystal/src/LoadIsawPeaks.cpp b/Framework/Crystal/src/LoadIsawPeaks.cpp
index 5933cead03d0fcd7246574eaae4e738f93e332fa..f1668f01c84f5a28f502ffbcbf9d362aef73e45d 100644
--- a/Framework/Crystal/src/LoadIsawPeaks.cpp
+++ b/Framework/Crystal/src/LoadIsawPeaks.cpp
@@ -256,7 +256,7 @@ std::string LoadIsawPeaks::readHeader(PeaksWorkspace_sptr outWS,
  */
 DataObjects::Peak LoadIsawPeaks::readPeak(PeaksWorkspace_sptr outWS,
                                           std::string &lastStr,
-                                          std::ifstream &in, size_t &seqNum,
+                                          std::ifstream &in, int &seqNum,
                                           std::string bankName, double qSign) {
   double h;
   double k;
@@ -487,7 +487,7 @@ void LoadIsawPeaks::appendFile(PeaksWorkspace_sptr outWS,
     oss << bankString << bankNum;
     std::string bankName = oss.str();
 
-    size_t seqNum;
+    int seqNum;
 
     try {
       // Read the peak
diff --git a/Framework/Crystal/src/PredictPeaks.cpp b/Framework/Crystal/src/PredictPeaks.cpp
index 2fd61b1b2fb9e82efe0c641ec29e4dd5a8864bd6..26a76731256ca2ff7affdfaf5b4f9872ad77e647 100644
--- a/Framework/Crystal/src/PredictPeaks.cpp
+++ b/Framework/Crystal/src/PredictPeaks.cpp
@@ -274,7 +274,7 @@ void PredictPeaks::exec() {
     HKLFilterWavelength lambdaFilter(orientedUB, lambdaMin, lambdaMax);
 
     size_t allowedPeakCount = 0;
-    size_t seqNum = 1;
+    int seqNum = 1;
 
     bool useExtendedDetectorSpace = getProperty("PredictPeaksOutsideDetectors");
     if (useExtendedDetectorSpace &&
@@ -478,7 +478,7 @@ void PredictPeaks::setStructureFactorCalculatorFromSample(
 void PredictPeaks::calculateQAndAddToOutput(const V3D &hkl,
                                             const DblMatrix &orientedUB,
                                             const DblMatrix &goniometerMatrix,
-                                            size_t &seqNum) {
+                                            int &seqNum) {
   // The q-vector direction of the peak is = goniometer * ub * hkl_vector
   // This is in inelastic convention: momentum transfer of the LATTICE!
   // Also, q does have a 2pi factor = it is equal to 2pi/wavelength.
diff --git a/Framework/Crystal/src/SaveHKL.cpp b/Framework/Crystal/src/SaveHKL.cpp
index 49616925b3f23cdfdea7ea78985310a1f5c54761..1a610f4821fb867462309934b09d18fa1a924d5a 100644
--- a/Framework/Crystal/src/SaveHKL.cpp
+++ b/Framework/Crystal/src/SaveHKL.cpp
@@ -345,7 +345,7 @@ void SaveHKL::exec() {
           continue;
         }
         int run = p.getRunNumber();
-        size_t seqNum = p.getPeakNumber();
+        int seqNum = p.getPeakNumber();
         int bank = 0;
         std::string bankName = p.getBankName();
         int nCols, nRows;
diff --git a/Framework/Crystal/src/SaveIsawPeaks.cpp b/Framework/Crystal/src/SaveIsawPeaks.cpp
index 0c1ba594ce43db95564e50e927956b7365f62c86..8996931b2b883879ca4003663f48bccfe1832991 100644
--- a/Framework/Crystal/src/SaveIsawPeaks.cpp
+++ b/Framework/Crystal/src/SaveIsawPeaks.cpp
@@ -261,8 +261,8 @@ void SaveIsawPeaks::exec() {
   // =========================================
 
   // Go in order of run numbers
-  size_t maxPeakNumb = 0;
-  size_t appendPeakNumb = 0;
+  int maxPeakNumb = 0;
+  int appendPeakNumb = 0;
   runMap_t::iterator runMap_it;
   for (runMap_it = runMap.begin(); runMap_it != runMap.end(); ++runMap_it) {
     // Start of a new run
diff --git a/Framework/DataHandling/src/LoadNexusProcessed.cpp b/Framework/DataHandling/src/LoadNexusProcessed.cpp
index 2d3c2bb55a22ad5b2be5b911593ba5c0e74c057b..e55371692ba92b85f2a22f60c1f5c1fd95dad651 100644
--- a/Framework/DataHandling/src/LoadNexusProcessed.cpp
+++ b/Framework/DataHandling/src/LoadNexusProcessed.cpp
@@ -1155,6 +1155,14 @@ API::Workspace_sptr LoadNexusProcessed::loadPeaksEntry(NXEntry &entry) {
         if (ival != -1)
           peakWS->getPeak(r).setRunNumber(ival);
       }
+    } else if (str == "column_17") {
+      NXInt nxInt = nx_tw.openNXInt(str);
+      nxInt.load();
+
+      for (int r = 0; r < numberPeaks; r++) {
+        int ival = nxInt[r];
+        peakWS->getPeak(r).setPeakNumber(ival);
+      }
     } else if (str == "column_15") {
       NXDouble nxDouble = nx_tw.openNXDouble(str);
       nxDouble.load();
diff --git a/Framework/DataObjects/inc/MantidDataObjects/Peak.h b/Framework/DataObjects/inc/MantidDataObjects/Peak.h
index 9499f47fb197db316c20daead2cf499c72b73811..e00ed6c464a8fe23809f1f62dc8e29710d4189b2 100644
--- a/Framework/DataObjects/inc/MantidDataObjects/Peak.h
+++ b/Framework/DataObjects/inc/MantidDataObjects/Peak.h
@@ -150,8 +150,8 @@ public:
   int getCol() const override;
   void setRow(int m_row);
   void setCol(int m_col);
-  void setPeakNumber(size_t m_peakNumber) override;
-  size_t getPeakNumber() const override;
+  void setPeakNumber(int m_peakNumber) override;
+  int getPeakNumber() const override;
 
   virtual Mantid::Kernel::V3D getDetPos() const override;
   double getL1() const override;
@@ -246,7 +246,7 @@ private:
   double m_orig_L;
 
   // keep peak number
-  size_t m_peakNumber;
+  int m_peakNumber;
 
   /// List of contributing detectors IDs
   std::set<int> m_detIDs;
diff --git a/Framework/DataObjects/src/Peak.cpp b/Framework/DataObjects/src/Peak.cpp
index e29608a53266f8c3591a20538be63d33381d4a77..77b3b7ce652a25081ade0f841ce8eb448aef6bd0 100644
--- a/Framework/DataObjects/src/Peak.cpp
+++ b/Framework/DataObjects/src/Peak.cpp
@@ -884,7 +884,7 @@ int Peak::getCol() const { return m_col; }
 // -------------------------------------------------------------------------------------
 /**Returns the unique peak number
  * Returns -1 if it could not find it. */
-size_t Peak::getPeakNumber() const { return m_peakNumber; }
+int Peak::getPeakNumber() const { return m_peakNumber; }
 
 // -------------------------------------------------------------------------------------
 /** For RectangularDetectors only, sets the row (y) of the pixel of the
@@ -901,7 +901,7 @@ void Peak::setCol(int m_col) { this->m_col = m_col; }
 // -------------------------------------------------------------------------------------
 /** Sets the unique peak number
  * @param m_peakNumber :: unique peak number value   */
-void Peak::setPeakNumber(size_t m_peakNumber) {
+void Peak::setPeakNumber(int m_peakNumber) {
   this->m_peakNumber = m_peakNumber;
 }
 
diff --git a/Framework/DataObjects/src/PeakColumn.cpp b/Framework/DataObjects/src/PeakColumn.cpp
index 6ce97be3dc663259fd5bee3adf91fba207bf98c6..891e199908ab275e30a2c6c570e9b6ddc761bbf9 100644
--- a/Framework/DataObjects/src/PeakColumn.cpp
+++ b/Framework/DataObjects/src/PeakColumn.cpp
@@ -295,7 +295,7 @@ const void *PeakColumn::void_pointer(size_t index) const {
     value = peak.getRunNumber();
     return boost::get<int>(&value);
   } else if (m_name == "PeakNumber") {
-    value = static_cast<int>(peak.getPeakNumber());
+    value = peak.getPeakNumber();
     return boost::get<int>(&value);
   } else if (m_name == "DetID") {
     value = peak.getDetectorID();
diff --git a/Framework/DataObjects/src/PeaksWorkspace.cpp b/Framework/DataObjects/src/PeaksWorkspace.cpp
index 322ee2eacc9dbf298832d65df84e0b57597c2bfe..e6d9332a8c88ee201b7d6b83d18c51cc95f75528 100644
--- a/Framework/DataObjects/src/PeaksWorkspace.cpp
+++ b/Framework/DataObjects/src/PeaksWorkspace.cpp
@@ -695,7 +695,7 @@ void PeaksWorkspace::saveNexus(::NeXus::File *file) const {
   std::vector<double> dSpacing(np);
   std::vector<double> TOF(np);
   std::vector<int> runNumber(np);
-  std::vector<size_t> peakNumber(np);
+  std::vector<int> peakNumber(np);
   std::vector<double> goniometerMatrix(9 * np);
   std::vector<std::string> shapes(np);
 
@@ -865,8 +865,8 @@ void PeaksWorkspace::saveNexus(::NeXus::File *file) const {
   file->closeData();
 
   // Peak Number column
-  file->writeData("column_20", peakNumber);
-  file->openData("column_20");
+  file->writeData("column_17", peakNumber);
+  file->openData("column_17");
   file->putAttr("name", "Peak Number");
   file->putAttr("interpret_as", specifyInteger);
   file->putAttr("units", "Not known"); // Units may need changing when known
diff --git a/Framework/Geometry/inc/MantidGeometry/Crystal/IPeak.h b/Framework/Geometry/inc/MantidGeometry/Crystal/IPeak.h
index d2d33790210decabbbabe294950c5ae849566d5d..190b05404ef62a39551f7e47b9d6a43285bea2ee 100644
--- a/Framework/Geometry/inc/MantidGeometry/Crystal/IPeak.h
+++ b/Framework/Geometry/inc/MantidGeometry/Crystal/IPeak.h
@@ -77,8 +77,8 @@ public:
   virtual double getBinCount() const = 0;
   virtual void setBinCount(double m_BinCount) = 0;
 
-  virtual size_t getPeakNumber() const = 0;
-  virtual void setPeakNumber(size_t m_PeakNumber) = 0;
+  virtual int getPeakNumber() const = 0;
+  virtual void setPeakNumber(int m_PeakNumber) = 0;
 
   virtual Mantid::Kernel::Matrix<double> getGoniometerMatrix() const = 0;
   virtual void setGoniometerMatrix(
diff --git a/Framework/Geometry/test/MockObjects.h b/Framework/Geometry/test/MockObjects.h
index 43b6acf2883a99eb38dc489f940cecd293f887a7..5a02b8d9c582910186c93549c7fe222fc95ffdac 100644
--- a/Framework/Geometry/test/MockObjects.h
+++ b/Framework/Geometry/test/MockObjects.h
@@ -65,9 +65,9 @@ public:
   MOCK_CONST_METHOD0(getDetector, Geometry::IDetector_const_sptr());
   MOCK_CONST_METHOD0(getInstrument, Geometry::Instrument_const_sptr());
   MOCK_CONST_METHOD0(getRunNumber, int());
-  MOCK_CONST_METHOD0(getPeakNumber, size_t());
+  MOCK_CONST_METHOD0(getPeakNumber, int());
   MOCK_METHOD1(setRunNumber, void(int m_RunNumber));
-  MOCK_METHOD1(setPeakNumber, void(size_t m_PeakNumber));
+  MOCK_METHOD1(setPeakNumber, void(int m_PeakNumber));
   MOCK_CONST_METHOD0(getMonitorCount, double());
   MOCK_METHOD1(setMonitorCount, void(double m_MonitorCount));
   MOCK_CONST_METHOD0(getH, double());