diff --git a/tree/src/TTreeFilePrefetch.cxx b/tree/src/TTreeFilePrefetch.cxx
index 587ac1b216c58f6509745ba1a0853b2dbdfc6922..2679b39f9f24fc46ff74442d5d43223ef50ee20f 100644
--- a/tree/src/TTreeFilePrefetch.cxx
+++ b/tree/src/TTreeFilePrefetch.cxx
@@ -1,4 +1,4 @@
-// @(#)root/tree:$Name:  $:$Id: TTreeFilePrefetch.cxx,v 1.6 2006/06/12 09:02:03 brun Exp $
+// @(#)root/tree:$Name:  $:$Id: TTreeFilePrefetch.cxx,v 1.7 2006/06/14 13:15:55 brun Exp $
 // Author: Rene Brun   04/06/2006
 
 /*************************************************************************
@@ -101,6 +101,7 @@ void TTreeFilePrefetch::AddBranch(TBranch *b)
    //this function is called by TBranch::GetBasket
       
    if (!fIsLearning) return;
+   if (b->GetListOfBranches()->GetEntries() > 0) return;
 
    //Is branch already in the cache?
    Bool_t isNew = kTRUE;
@@ -144,6 +145,7 @@ Bool_t TTreeFilePrefetch::FillBuffer()
    Long64_t oldEntryNext = fEntryNext;
    fEntryNext = entry + tree->GetEntries()*fBufferSize/totbytes;
    if (fEntryNext > fEntryMax) fEntryNext = fEntryMax+1;
+//printf("FillBuffer, entry=%lld, oldEntryNext=%lld, fEntryNext=%lld\n",entry,oldEntryNext,fEntryNext);
          
    //clear cache buffer
    TFilePrefetch::Prefetch(0,0);
@@ -160,11 +162,11 @@ Bool_t TTreeFilePrefetch::FillBuffer()
          Long64_t pos = b->GetBasketSeek(j);
          Int_t len = lbaskets[j];
          if (pos <= 0 || len <= 0) continue;
-         if (entries[j] >= oldEntryNext && entries[j] < fEntryNext) {
-            TFilePrefetch::Prefetch(pos,len);
-         }
+         if (entries[j] > fEntryNext) continue;
+         if (entries[j] < entry && (j<nb-1 && entries[j+1] < entry)) continue;
+         TFilePrefetch::Prefetch(pos,len);
       }
-      if (gDebug > 0) printf("Entry: %lld, registering baskets branch %s\n",entry,fBranches[i]->GetName());
+      if (gDebug > 0) printf("Entry: %lld, registering baskets branch %s, fEntryNext=%lld, fNseek=%d, fNtot=%d\n",entry,fBranches[i]->GetName(),fEntryNext,fNseek,fNtot);
    }
    fIsLearning = kFALSE;
    return kTRUE;