diff --git a/engines/sci/sfx/iterator.cpp b/engines/sci/sfx/iterator.cpp
index 69fedbd..e44a1d7 100644
--- a/engines/sci/sfx/iterator.cpp
+++ b/engines/sci/sfx/iterator.cpp
@@ -270,6 +270,9 @@ int BaseSongIterator::parseMidiCommand(byte *buf, int *result, SongIteratorChann
 			channel->loop_offset = channel->offset;
 			channel->loop_timepos = channel->total_timepos;
 
+			Sci1SongIterator *self1 = (Sci1SongIterator *)this;
+			self1->_channels[1].loop_offset = self1->_channels[1].offset;
+
 			return /* Execute next command */
 			    nextCommand(buf, result);
 		} else {
@@ -347,6 +350,8 @@ int BaseSongIterator::parseMidiCommand(byte *buf, int *result, SongIteratorChann
 				// but somehow slows the exit sequence down to take 20 seconds
 				// instead of about 3.
 
+				self1->_channels[1].state = SI_STATE_DELTA_TIME;
+				self1->_channels[1].offset = self1->_channels[1].loop_offset;
 				return SI_LOOP;
 			}
 
