diff --git a/src/xercesc/validators/schema/TraverseSchema.cpp b/src/xercesc/validators/schema/TraverseSchema.cpp
index 66007473c57d83dd15c529352298f29cc61edafb..e39631f4072b3d18189db33f7f7d99fdea72fe9f 100644
--- a/src/xercesc/validators/schema/TraverseSchema.cpp
+++ b/src/xercesc/validators/schema/TraverseSchema.cpp
@@ -234,6 +234,12 @@ TraverseSchema::TraverseSchema( DOMElement* const    schemaRoot
 
             preprocessSchema(schemaRoot, schemaURL, multipleImport);
             doTraverseSchema(schemaRoot);
+
+            // Store the scope count in case we need to add more to this
+            // grammar (multi-import case). schemaGrammar and fSchemaGrammar
+            // should be the same here.
+            //
+            fSchemaGrammar->setScopeCount (fScopeCount);
         }
 
     }
@@ -291,7 +297,6 @@ void TraverseSchema::doTraverseSchema(const DOMElement* const schemaRoot) {
 void TraverseSchema::preprocessSchema(DOMElement* const schemaRoot,
                                       const XMLCh* const schemaURL,
                                       bool  multipleImport) {
-
     if (!multipleImport) {
         // Make sure namespace binding is defaulted
         const XMLCh* rootPrefix = schemaRoot->getPrefix();