     }
 -//  Dmsg3(dbglevel, "match_volblock: sblock=%u eblock=%u recblock=%u\n",
 -//             volblock->sblock, volblock->eblock, rec->Block);
+-   if (volblock->sblock <= rec->Block && volblock->eblock >= rec->Block) {
 +   Dmsg3(dbglevel, "match_volblock: sblock=%u eblock=%u recblock=%u\n",
 +         volblock->sblock, volblock->eblock, rec->Block);
 +
 +   /* FIXME */
 +   /* Don't reject the call if we are called with a small offset */
-+   uint32_t min = (volblock->sblock)?volblock->sblock-1:0;
++   uint32_t min = (volblock->sblock>DEFAULT_BLOCK_SIZE)?volblock->sblock-DEFAULT_BLOCK_SIZE:0;
 +
 +   /* We have call where rec->Block is the block after EndBlock 
 +    * But, we are already decoding rec->Block-1Block records
 +    */
 +   uint32_t max = volblock->eblock+DEFAULT_BLOCK_SIZE;
-    if (volblock->sblock <= rec->Block && volblock->eblock >= rec->Block) {
-+//   if (min <= rec->Block && max >= rec->Block) {
++//   if (volblock->sblock <= rec->Block && volblock->eblock >= rec->Block) {
++   if (min <= rec->Block && max >= rec->Block) {
        return 1;
     }
     /* Once we get past last eblock, we are done */
-Index: src/stored/read_record.c
-===================================================================
---- src/stored/read_record.c	(révision 8116)
-+++ src/stored/read_record.c	(copie de travail)
+Index: read_record.c
+===================================================================
+--- read_record.c	(révision 8116)
++++ read_record.c	(copie de travail)
 @@ -261,8 +261,8 @@
                 Dmsg2(100, "All done=(file:block) %u:%u\n", dev->file, dev->block_num);
                 break;

    }
    /*
     * Check for Start or End of Session Record
Index: src/stored/record.c
===================================================================
--- src/stored/record.c	(révision 8116)
+++ src/stored/record.c	(copie de travail)
@@ -452,8 +452,8 @@
       rec->Block = block->BlockNumber;
       rec->File = ((DEVICE *)block->dev)->file;
    } else {
-      rec->Block = ((DEVICE *)block->dev)->EndBlock;
-      rec->File = ((DEVICE *)block->dev)->EndFile;
+      rec->Block = ((DEVICE *)block->dev)->block_num;
+      rec->File = ((DEVICE *)block->dev)->file;
    }   
 
 
Index: src/stored/block.c
===================================================================
--- src/stored/block.c	(révision 8116)
+++ src/stored/block.c	(copie de travail)
@@ -1119,8 +1119,8 @@
       uint64_t addr = dev->file_addr + block->read_len - 1;
       dcr->EndBlock = (uint32_t)addr;
       dcr->EndFile = (uint32_t)(addr >> 32);
-      dev->block_num = dcr->EndBlock;
-      dev->file = dcr->EndFile;
+      dev->block_num = (uint32_t)(dev->file_addr);
+      dev->file = (uint32_t)(dev->file_addr  >> 32);
    }
    dcr->VolMediaId = dev->VolCatInfo.VolMediaId;
    dev->file_addr += block->read_len;

                rec->remainder = 0;
                rec->state &= ~REC_PARTIAL_RECORD;
                if (try_repositioning(jcr, rec, dcr)) {
@@ -346,6 +346,9 @@
        */
       if (dev->file > bsr->volfile->sfile ||             
          (dev->file == bsr->volfile->sfile && dev->block_num > bsr->volblock->sblock)) {
+         Dmsg4(dbglvl, _("Reposition from (file:block) %u:%u to %u:%u\n"),
+            dev->file, dev->block_num, bsr->volfile->sfile,
+            bsr->volblock->sblock);
          return false;
       }
       if (verbose) {
Index: parse_bsr.c
===================================================================
--- parse_bsr.c	(révision 8116)
+++ parse_bsr.c	(copie de travail)
@@ -190,6 +190,9 @@
    for (bsr=root_bsr; bsr; bsr=bsr->next) {
       bsr->root = root_bsr;
    }
+   if (verbose) {
+      dump_bsr(root_bsr, true);
+   }
    return root_bsr;
 }
 
Index: bls.c
===================================================================
--- bls.c	(révision 8116)
+++ bls.c	(copie de travail)
@@ -400,8 +400,8 @@
 
       if (file_is_included(ff, attr->fname) && !file_is_excluded(ff, attr->fname)) {
