Index: src/stored/bcopy.c
===================================================================
--- src/stored/bcopy.c	(revision 5929)
+++ src/stored/bcopy.c	(working copy)
@@ -226,6 +226,7 @@
  */
 static bool record_cb(DCR *in_dcr, DEV_RECORD *rec)
 {
+   bool force_to_device = false;
    if (list_records) {
       Pmsg5(000, _("Record: SessId=%u SessTim=%u FileIndex=%d Stream=%d len=%u\n"),
             rec->VolSessionId, rec->VolSessionTime, rec->FileIndex,
@@ -251,22 +252,7 @@
          jobs++;
          break;
       case EOS_LABEL:
-         while (!write_record_to_block(out_block, rec)) {
-            Dmsg2(150, "!write_record_to_block data_len=%d rem=%d\n", rec->data_len,
-                       rec->remainder);
-            if (!write_block_to_device(out_jcr->dcr)) {
-               Dmsg2(90, "Got write_block_to_dev error on device %s: ERR=%s\n",
-                  out_dev->print_name(), out_dev->bstrerror());
-               Jmsg(out_jcr, M_FATAL, 0, _("Cannot fixup device error. %s\n"),
-                     out_dev->bstrerror());
-            }
-         }
-         if (!write_block_to_device(out_jcr->dcr)) {
-            Dmsg2(90, "Got write_block_to_dev error on device %s: ERR=%s\n",
-               out_dev->print_name(), out_dev->bstrerror());
-            Jmsg(out_jcr, M_FATAL, 0, _("Cannot fixup device error. %s\n"),
-                  out_dev->bstrerror());
-         }
+         force_to_device = true;
          break;
       case EOM_LABEL:
          Pmsg0(000, _("EOM label not copied.\n"));
@@ -292,6 +278,14 @@
          break;
       }
    }
+   if (force_to_device) {
+      if (!write_block_to_device(out_jcr->dcr)) {
+         Dmsg2(90, "Got write_block_to_dev error on device %s: ERR=%s\n",
+            out_dev->print_name(), out_dev->bstrerror());
+         Jmsg(out_jcr, M_FATAL, 0, _("Cannot fixup device error. %s\n"),
+               out_dev->bstrerror());
+      }
+   }
    return true;
 }
 
