diff --git a/Framework/PythonInterface/plugins/algorithms/WorkflowAlgorithms/DirectILLDiagnostics.py b/Framework/PythonInterface/plugins/algorithms/WorkflowAlgorithms/DirectILLDiagnostics.py
index 7e771323b5f73efb4fe7da2969d73de8e33a284c..4b136994689002a10f6a5c0714ab01b7377e796f 100644
--- a/Framework/PythonInterface/plugins/algorithms/WorkflowAlgorithms/DirectILLDiagnostics.py
+++ b/Framework/PythonInterface/plugins/algorithms/WorkflowAlgorithms/DirectILLDiagnostics.py
@@ -9,8 +9,8 @@ from mantid.api import (AlgorithmFactory, DataProcessorAlgorithm, InstrumentVali
                         WorkspaceProperty, WorkspaceUnitValidator)
 from mantid.kernel import (CompositeValidator, Direction, FloatBoundedValidator, IntArrayBoundedValidator,
                            IntArrayProperty, Property, StringArrayProperty, StringListValidator)
-from mantid.simpleapi import (ClearMaskFlag, CloneWorkspace, CreateEmptyTableWorkspace, Divide,
-                              ExtractMask, Integration, LoadMask, MaskDetectors, MedianDetectorTest, Plus, SolidAngle)
+from mantid.simpleapi import (ClearMaskFlag, CloneWorkspace, CreateEmptyTableWorkspace, CreateSingleValuedWorkspace, Divide,
+                              ExtractMask, Integration, LoadMask, MaskDetectors, MedianDetectorTest, Multiply, Plus, SolidAngle)
 import numpy
 import os.path
 
@@ -83,10 +83,17 @@ def _createDiagnosticsReportTable(reportWSName, numberHistograms, algorithmLoggi
 
 def _createMaskWS(ws, name, algorithmLogging):
     """Return a single bin workspace with same number of histograms as ws."""
-    maskWS, detList = ExtractMask(InputWorkspace=ws,
-                                  OutputWorkspace=name,
-                                  EnableLogging=algorithmLogging)
-    maskWS *= 0.0
+    extractResult = ExtractMask(InputWorkspace=ws,
+                                OutputWorkspace=name,
+                                EnableLogging=algorithmLogging)
+    zeroWS = CreateSingleValuedWorkspace(DataValue=0.,
+                                         ErrorValue=0.,
+                                         EnableLogging=algorithmLogging,
+                                         StoreInADS=False)
+    maskWS = Multiply(LHSWorkspace=extractResult.OutputWorkspace,
+                      RHSWorkspace=zeroWS,
+                      OutputWorkspace=name,
+                      EnableLogging=algorithmLogging)
     return maskWS
 
 
@@ -793,10 +800,10 @@ class DirectILLDiagnostics(DataProcessorAlgorithm):
                       DetectorList=userMask,
                       ComponentList=maskComponents,
                       EnableLogging=algorithmLogging)
-        maskWS, detectorList = ExtractMask(InputWorkspace=maskWS,
-                                           OutputWorkspace=maskWSName,
-                                           EnableLogging=algorithmLogging)
-        return maskWS
+        extractResult = ExtractMask(InputWorkspace=maskWS,
+                                    OutputWorkspace=maskWSName,
+                                    EnableLogging=algorithmLogging)
+        return extractResult.OutputWorkspace
 
     def _value(self, ws, propertyName, instrumentParameterName, defaultValue):
         """Return a suitable value either from a property, the IPF or the supplied defaultValue."""
diff --git a/Framework/PythonInterface/test/python/plugins/algorithms/WorkflowAlgorithms/DirectILLDiagnosticsTest.py b/Framework/PythonInterface/test/python/plugins/algorithms/WorkflowAlgorithms/DirectILLDiagnosticsTest.py
index f96d3820519481349700b23bfebfbf3133cc77ad..35aa19c91d323eadb57e5aa0df2369ff4b0d9990 100644
--- a/Framework/PythonInterface/test/python/plugins/algorithms/WorkflowAlgorithms/DirectILLDiagnosticsTest.py
+++ b/Framework/PythonInterface/test/python/plugins/algorithms/WorkflowAlgorithms/DirectILLDiagnosticsTest.py
@@ -181,6 +181,34 @@ class DirectILLDiagnosticsTest(unittest.TestCase):
             else:
                 self.assertEquals(ys[0], 0)
 
+    def testMaskedComponents(self):
+        inWS = mtd[self._RAW_WS_NAME]
+        spectraCount = inWS.getNumberHistograms()
+        outWSName = 'diagnosticsWS'
+        kwargs = {
+            'InputWorkspace': self._RAW_WS_NAME,
+            'OutputWorkspace': outWSName,
+            'ElasticPeakDiagnostics': 'Peak Diagnostics OFF',
+            'BkgDiagnostics': 'Bkg Diagnostics OFF',
+            'BeamStopDiagnostics': 'Beam Stop Diagnostics OFF',
+            'DefaultMask': 'Default Mask OFF',
+            'MaskedComponents': 'tube_1',
+            'rethrow': True
+        }
+        run_algorithm('DirectILLDiagnostics', **kwargs)
+        self.assertTrue(mtd.doesExist(outWSName))
+        outWS = mtd[outWSName]
+        self.assertEquals(outWS.getNumberHistograms(), spectraCount)
+        self.assertEquals(outWS.blocksize(), 1)
+        for i in range(spectraCount):
+            Ys = outWS.readY(i)
+            detector = outWS.getDetector(i)
+            componentName = detector.getFullName()
+            if 'tube_1' in componentName:
+                self.assertEquals(Ys[0], 1)
+            else:
+                self.assertEquals(Ys[0], 0)
+
     def testOutputIsUsable(self):
         inWS = mtd[self._RAW_WS_NAME]
         spectraCount = inWS.getNumberHistograms()