Index: src/assets/js/mod/tape.js
===================================================================
--- src/assets/js/mod/tape.js	(revision e679bce2a7d2484f5395220f40517ea38e74c0da)
+++ src/assets/js/mod/tape.js	(revision 4fbe2c1f0fd6e892ba64f0b6b6b9d72393a93573)
@@ -109,4 +109,6 @@
   stopWinden(tape);
   let snelheid = START_SNELHEID;
+  let vorigePositie = null;
+  let stil = 0;
   tape.classList.add('is-winding');
   if (richting < 0) tape.classList.add('is-winding-back');
@@ -115,4 +117,13 @@
     p.seekBy(richting * snelheid * (STAP_MS / 1000));
     tekenBand(tape);
+    // AAN HET EIND VAN DE BAND STOPPEN MET SPOELEN. De speler klemt de positie
+    // af, dus daar gebeurt niets meer -- maar de spoelen bleven wel doordraaien
+    // en de knop bleef oplichten, alsof er nog band was. Beweegt de teller twee
+    // rondes niet, dan zijn we bij de kop of de staart.
+    const nu = p.tapeTijden ? p.tapeTijden().cur : null;
+    if (nu !== null && vorigePositie !== null && Math.abs(nu - vorigePositie) < 0.05) {
+      if (++stil >= 2) { stopWinden(tape); return; }
+    } else stil = 0;
+    vorigePositie = nu;
   }, STAP_MS);
   winder = { timer, tape };
