diff --git a/Code/Mantid/Framework/DataHandling/src/Load.cpp b/Code/Mantid/Framework/DataHandling/src/Load.cpp
index 1c7fe2098e898328e9da2762d6a8c084e3ae9c87..da2106b76c425c3bb823eeb3379a3a800d939b5c 100644
--- a/Code/Mantid/Framework/DataHandling/src/Load.cpp
+++ b/Code/Mantid/Framework/DataHandling/src/Load.cpp
@@ -553,8 +553,9 @@ namespace Mantid
       const std::vector< Property*> &props = loader->getProperties();
       for (unsigned int i = 0; i < props.size(); ++i)
       {
-        if (props[i]->direction() == Direction::Output && 
-          dynamic_cast<IWorkspaceProperty*>(props[i]) )
+        auto wsProp = dynamic_cast<IWorkspaceProperty*>(props[i]);
+
+        if (wsProp && !wsProp->isOptional() && props[i]->direction() == Direction::Output )
         {
           if ( props[i]->value().empty() ) props[i]->setValue("LoadChildWorkspace");
         }