diff --git a/Database/APR/RootStorageSvc/src/RootTreeContainer.cpp b/Database/APR/RootStorageSvc/src/RootTreeContainer.cpp
index a837c5da66a6cb436a3a19f63f5f7d329c2a87a3..a32886e2587b1a7375eed6229e8d377c18da5b90 100755
--- a/Database/APR/RootStorageSvc/src/RootTreeContainer.cpp
+++ b/Database/APR/RootStorageSvc/src/RootTreeContainer.cpp
@@ -434,11 +434,14 @@ RootTreeContainer::loadObject(DataCallBack* call, Token::OID_t& oid, DbAccessMod
                   dsc.branch->SetAddress(dsc.object);
                   break;
               }
+              // Must move tree entry to correct value
+              if(m_tree) {
+                 if (m_tree->GetReadEntry() > evt_id) m_tree->LoadTree(evt_id);
+              } else if (dsc.branch->GetTree()->GetReadEntry() > evt_id) {
+                 dsc.branch->GetTree()->LoadTree(evt_id);
+              }
               // read the object
               numBytesBranch = dsc.branch->GetEntry(evt_id);
-              // Must move tree entry to correct value
-              if(m_tree) m_tree->LoadTree(evt_id);
-              else dsc.branch->GetTree()->LoadTree(evt_id);
               numBytes += numBytesBranch;
               if ( numBytesBranch >= 0 )     {
 		 hasRead=true;