diff -u base/cinelerra/transportque.C hvirtual-1.1.6/cinelerra/transportque.C
--- base/cinelerra/transportque.C	2003-05-16 12:53:43.000000000 +0200
+++ hvirtual-1.1.6/cinelerra/transportque.C	2003-05-16 15:05:55.000000000 +0200
@@ -125,6 +125,10 @@
 			else
 				end_position = edl->local_session->selectionend;
 //printf("TransportCommand::set_playback_range 1 %f %f\n", start_position, end_position);
+// this prevents a crush if start position is after the loop when playing forwards
+			if (edl->local_session->loop_playback && start_position > edl->local_session->loop_end) {       
+					start_position = edl->local_session->loop_start;
+			}
 			break;
 		
 		case SLOW_REWIND:
@@ -135,6 +139,11 @@
 				start_position = 0;
 			else
 				start_position = edl->local_session->selectionstart;
+// this prevents a crush if start position is before the loop when playing backwards
+			if (edl->local_session->loop_playback && start_position <= edl->local_session->loop_start) {
+					start_position = edl->local_session->loop_end;
+					end_position = edl->local_session->loop_end;
+			}
 			break;
 		
 		case CURRENT_FRAME:
