diff --git a/Code/Mantid/Framework/DataObjects/inc/MantidDataObjects/MDHistoWorkspaceIterator.h b/Code/Mantid/Framework/DataObjects/inc/MantidDataObjects/MDHistoWorkspaceIterator.h
index 07ae1d8d6fb7756a96253c694200a1f4ecb7e1d7..454bb4ea833518726525c45821694cbe297607e2 100644
--- a/Code/Mantid/Framework/DataObjects/inc/MantidDataObjects/MDHistoWorkspaceIterator.h
+++ b/Code/Mantid/Framework/DataObjects/inc/MantidDataObjects/MDHistoWorkspaceIterator.h
@@ -103,6 +103,8 @@ public:
 
   virtual size_t getNumEvents() const;
 
+  virtual signal_t getNumEventsFraction() const;
+
   virtual uint16_t getInnerRunIndex(size_t index) const;
 
   virtual int32_t getInnerDetectorID(size_t index) const;
diff --git a/Code/Mantid/Framework/DataObjects/src/MDHistoWorkspaceIterator.cpp b/Code/Mantid/Framework/DataObjects/src/MDHistoWorkspaceIterator.cpp
index 529265e29d417147608d469c0d1dc73cee0a9cfe..f18a82bc58547428832e5c940dd95d5af83acb72 100644
--- a/Code/Mantid/Framework/DataObjects/src/MDHistoWorkspaceIterator.cpp
+++ b/Code/Mantid/Framework/DataObjects/src/MDHistoWorkspaceIterator.cpp
@@ -377,9 +377,16 @@ VecMDExtents MDHistoWorkspaceIterator::getBoxExtents() const
 
 //----------------------------------------------------------------------------------------------
 /// Returns the number of events/points contained in this box
-/// @return 1 always: e.g. there is one (fake) event in the middle of the box.
+/// @return truncated number of events
 size_t MDHistoWorkspaceIterator::getNumEvents() const {
-  return static_cast<size_t>(m_ws->getNumEventsAt(m_pos));
+  return static_cast<size_t>(this->getNumEventsFraction());
+}
+
+//----------------------------------------------------------------------------------------------
+/// Returns the number of events/points contained in this box
+/// @return eact number of events (weights may be applied)
+signal_t MDHistoWorkspaceIterator::getNumEventsFraction() const {
+  return m_ws->getNumEventsAt(m_pos);
 }
 
 //----------------------------------------------------------------------------------------------
diff --git a/Code/Mantid/Framework/MDAlgorithms/src/IntegrateMDHistoWorkspace.cpp b/Code/Mantid/Framework/MDAlgorithms/src/IntegrateMDHistoWorkspace.cpp
index 4965eb815736fbf3aec70c252add1e488ee8b92f..582be236120683009b4426c66798aae595c8a612 100644
--- a/Code/Mantid/Framework/MDAlgorithms/src/IntegrateMDHistoWorkspace.cpp
+++ b/Code/Mantid/Framework/MDAlgorithms/src/IntegrateMDHistoWorkspace.cpp
@@ -159,7 +159,7 @@ void performWeightedSum(MDHistoWorkspaceIterator const *const iterator,
   sumSignal += weight * iterator->getSignal();
   const double error = iterator->getError();
   sumSQErrors += weight * (error * error);
-  sumNEvents += weight * iterator->getNumEvents();
+  sumNEvents += weight * double(iterator->getNumEventsFraction());
 }
 }