diff --git a/Framework/DataHandling/CMakeLists.txt b/Framework/DataHandling/CMakeLists.txt
index ca5ee47b5d52480e6bb0055518f1b1251efe52de..09cac14ac80039c9b886aff58a5947b93a703066 100644
--- a/Framework/DataHandling/CMakeLists.txt
+++ b/Framework/DataHandling/CMakeLists.txt
@@ -459,6 +459,7 @@ set ( TEST_FILES
 	LoadParameterFileTest.h
 	LoadPreNexusMonitorsTest.h
 	LoadPreNexusTest.h
+	LoadPSIMuonBinTest.h
 	LoadQKKTest.h
 	LoadRKHTest.h
 	LoadRaw3Test.h
diff --git a/Framework/DataHandling/src/LoadPSIMuonBin.cpp b/Framework/DataHandling/src/LoadPSIMuonBin.cpp
index b72df32bb7a2521c18d64c098f222c4e0c610641..142846c96ac56583051e3c27c725e49b337b512a 100644
--- a/Framework/DataHandling/src/LoadPSIMuonBin.cpp
+++ b/Framework/DataHandling/src/LoadPSIMuonBin.cpp
@@ -40,19 +40,13 @@ const std::string LoadPSIMuonBin::category() const {
 
 int LoadPSIMuonBin::confidence(Kernel::FileDescriptor &descriptor) const {
   auto &stream = descriptor.data();
-  // 85th character is a space & 89th character is a ~
-  stream.seekg(0, std::ios::beg);
-  int c = stream.get();
-  int confidence(0);
-  // Checks if postion 0 is a 1
-  if (c == 49) {
-    stream.seekg(1, std::ios::cur);
-    int c = stream.get();
-    // Checks if position 1 is N
-    if (c == 78)
-      confidence = 90;
+  Mantid::Kernel::BinaryStreamReader streamReader(stream);
+  std::string fileFormat;
+  streamReader.read(fileFormat, 2);
+  if (fileFormat != "1N"){
+    return 0;
   }
-  return confidence;
+  return 90;
 }
 
 // version 1 however there is an issue open to create a version which
@@ -377,7 +371,7 @@ void LoadPSIMuonBin::assignOutputWorkspaceParticulars(
       sizeof(m_header.temperatures) / sizeof(*m_header.temperatures);
   for (auto tempNum = 1u; tempNum < sizeOfTemps + 1; ++tempNum) {
     if (m_header.temperatures[tempNum - 1] != 0) {
-      logAlg->setProperty("LogType", "Number");
+      logAlg->setProperty("LogType", "String");
       logAlg->setProperty("LogName",
                           "Actual Temperature" + std::to_string(tempNum));
       logAlg->setProperty("LogText",
@@ -385,7 +379,7 @@ void LoadPSIMuonBin::assignOutputWorkspaceParticulars(
       logAlg->executeAsChildAlg();
 
       // Temperature deviation
-      logAlg->setProperty("LogType", "Number");
+      logAlg->setProperty("LogType", "String");
       logAlg->setProperty("LogName",
                           "Temperature Deviation" + std::to_string(tempNum));
       logAlg->setProperty(
@@ -453,9 +447,9 @@ void LoadPSIMuonBin::assignOutputWorkspaceParticulars(
   }
 
   // total events
-  logAlg->setProperty("LogType", "Number");
+  logAlg->setProperty("LogType", "String");
   logAlg->setProperty("LogName", "Total Number of Events");
-  logAlg->setProperty("LogText", m_header.totalEvents);
+  logAlg->setProperty("LogText", std::to_string(m_header.totalEvents));
   logAlg->executeAsChildAlg();
 }
 
diff --git a/Framework/DataHandling/test/LoadPSIMuonBinTest.h b/Framework/DataHandling/test/LoadPSIMuonBinTest.h
new file mode 100644
index 0000000000000000000000000000000000000000..9210a4c6d3d28a38a4681bbd2dec3f5d1cc91fee
--- /dev/null
+++ b/Framework/DataHandling/test/LoadPSIMuonBinTest.h
@@ -0,0 +1,125 @@
+#ifndef MANTID_DATAHANDLING_LOADPSIMUONBINTEST_H_
+#define MANTID_DATAHANDLING_LOADPSIMUONBINTEST_H_
+
+#include <cxxtest/TestSuite.h>
+
+#include "MantidDataHandling/LoadPSIMuonBin.h"
+#include "MantidAPI/AnalysisDataService.h"
+#include "MantidAPI/FileFinder.h"
+#include "MantidAPI/MatrixWorkspace.h"
+#include "MantidAPI/Sample.h"
+#include "MantidDataObjects/Workspace2D.h"
+#include "MantidKernel/FileDescriptor.h"
+
+
+using namespace Mantid;
+using namespace Mantid::DataHandling;
+using namespace Mantid::API;
+using namespace Mantid::Kernel;
+
+class LoadPSIMuonBinTest : public CxxTest::TestSuite {
+
+public:
+  // This pair of boilerplate methods prevent the suite being created statically
+  // This means the constructor isn't called when running other tests
+  static LoadPSIMuonBinTest *createSuite() { return new LoadPSIMuonBinTest(); }
+  static void destroySuite(LoadPSIMuonBinTest *suite) { delete suite; }
+
+  void test_Init() {
+    LoadPSIMuonBin alg;
+    TS_ASSERT_THROWS_NOTHING(alg.initialize())
+    TS_ASSERT(alg.isInitialized())
+
+    TS_ASSERT_THROWS_NOTHING(alg.setProperty(
+        "Filename", getTestFilePath("deltat_tdc_dolly_1529.bin")));
+    TS_ASSERT_THROWS_NOTHING(alg.setProperty("OutputWorkspace", "ws"));
+  }
+
+  void test_exec() {
+    LoadPSIMuonBin alg;
+    TS_ASSERT_THROWS_NOTHING(alg.initialize());
+    TS_ASSERT(alg.isInitialized());
+
+    TS_ASSERT_THROWS_NOTHING(alg.setProperty(
+        "Filename", getTestFilePath("deltat_tdc_dolly_1529.bin")));
+    TS_ASSERT_THROWS_NOTHING(alg.setProperty("OutputWorkspace", "ws"));
+    TS_ASSERT_THROWS_NOTHING(alg.execute());
+    
+    MatrixWorkspace_sptr ws;
+    TS_ASSERT_THROWS_NOTHING(
+        ws = AnalysisDataService::Instance().retrieveWS<MatrixWorkspace>(
+            "ws"));
+    TS_ASSERT(ws);
+
+    TS_ASSERT_EQUALS(ws->getTitle(), "BNFSO      - Run:1529");
+    TS_ASSERT_EQUALS(ws->getLog("Field")->value(), "0.000G");
+    TS_ASSERT_EQUALS(ws->getComment(), "Ba3NbFe3Si2O14, crystal                                       ");
+    TS_ASSERT_EQUALS(ws->getLog("Actual Temperature1")->value(),
+                     "4.999610");
+    TS_ASSERT_EQUALS(ws->getLog("Actual Temperature2")->value(),
+                     "5.197690");
+    TS_ASSERT_EQUALS(ws->getLog("end_time")->value(), "2011-07-04T11:56:24");
+    TS_ASSERT_EQUALS(ws->getLog("start_time")->value(), "2011-07-04T10:40:23");
+    TS_ASSERT_EQUALS(ws->getLog("Spectra0 label and scalar")->value(),
+                     "Forw - 14493858");
+    TS_ASSERT_EQUALS(ws->getLog("Spectra3 label and scalar")->value(),
+                     "Rite - 38247601");
+    TS_ASSERT_EQUALS(ws->getLog("Length of Run")->value(),
+                     "10.000000MicroSeconds");
+    TS_ASSERT_EQUALS(ws->getLog("Set Temperature")->value(), "5.000K");
+
+    TS_ASSERT_EQUALS(ws->x(0).size(), 10241);
+    TS_ASSERT_EQUALS(ws->y(0).size(), 10240);
+    TS_ASSERT_EQUALS(ws->e(0).size(), 10240);
+
+    TS_ASSERT_EQUALS(ws->x(0)[0], 0);
+    TS_ASSERT_EQUALS(ws->x(0)[10240], 10);
+    TS_ASSERT_EQUALS(ws->y(0)[0], 24);
+    TS_ASSERT_EQUALS(ws->y(0)[10239], 44);
+    TS_ASSERT_EQUALS(ws->e(0)[0], std::sqrt(ws->y(0)[0]));
+    TS_ASSERT_EQUALS(ws->e(0)[10239], std::sqrt(ws->y(0)[10239]));
+
+    TS_ASSERT_EQUALS(ws->getNumberHistograms(), 4);
+
+    TS_ASSERT_THROWS_NOTHING(AnalysisDataService::Instance().remove("ws"));
+  }
+
+  void test_fileCheck() {
+    LoadPSIMuonBin alg;
+    TS_ASSERT_THROWS_NOTHING(alg.initialize());
+    TS_ASSERT(alg.isInitialized());
+
+    TS_ASSERT_THROWS_NOTHING(alg.setProperty(
+        "Filename", getTestFilePath("pid_offset_vulcan_new.dat.bin")));
+    TS_ASSERT_THROWS_NOTHING(alg.setProperty("OutputWorkspace", "ws"));
+    TS_ASSERT_THROWS_NOTHING(alg.execute());
+
+    // If algorithm was successful there will be one, we are assuming it won't have been
+    TS_ASSERT_THROWS_ANYTHING(MatrixWorkspace_sptr ws = AnalysisDataService::Instance().retrieveWS<MatrixWorkspace>(
+            "ws"));
+
+    TS_ASSERT_THROWS_NOTHING(AnalysisDataService::Instance().remove("ws"));    
+  }
+
+  void test_confidence(){
+    LoadPSIMuonBin alg;
+    TS_ASSERT_THROWS_NOTHING(alg.initialize());
+    TS_ASSERT(alg.isInitialized());
+
+    FileDescriptor descriptor(getTestFilePath("deltat_tdc_dolly_1529.bin"));
+    TS_ASSERT_EQUALS(alg.confidence(descriptor), 90);
+
+    FileDescriptor descriptor1(getTestFilePath("pid_offset_vulcan_new.dat.bin"));
+    TS_ASSERT_EQUALS(alg.confidence(descriptor1), 0);
+  }
+
+  private:
+  std::string getTestFilePath(const std::string &filename) {
+    const std::string filepath =
+        Mantid::API::FileFinder::Instance().getFullPath(filename);
+    TS_ASSERT_DIFFERS(filepath, "");
+    return filepath;
+  }
+};
+
+#endif /* MANTID_DATAHANDLING_LOADPSIMUONBINTEST_H_ */
\ No newline at end of file
diff --git a/Testing/Data/UnitTest/deltat_tdc_dolly_1529.bin.md5 b/Testing/Data/UnitTest/deltat_tdc_dolly_1529.bin.md5
new file mode 100644
index 0000000000000000000000000000000000000000..6446f95b4313ba99b4bce69956dbb0f9d606972f
--- /dev/null
+++ b/Testing/Data/UnitTest/deltat_tdc_dolly_1529.bin.md5
@@ -0,0 +1 @@
+8f167ecdc9e5e862520b19eab0a362be