diff --git a/jitterbuf.c b/jitterbuf.c
index 3bdd3b5335c6daaeca24f609e3db3e814e5d8cb4..26d58cb6f5071c16cf631931685feb4ea6e35781 100755
--- a/jitterbuf.c
+++ b/jitterbuf.c
@@ -310,11 +310,16 @@ static void queue_put(jitterbuf *jb, void *data, int type, long ms, long ts)
 		jb->frames = frame;
 		frame->next = frame;
 		frame->prev = frame;
+	} else if (ts < jb->frames->ts) {
+		frame->next = jb->frames;
 		frame->prev = jb->frames->prev;
 
 		frame->next->prev = frame;
 		frame->prev->next = frame;
 
+		/* frame is out of order */
+		jb->info.frames_ooo++;
+
 		jb->frames = frame;
 	} else { 
 		p = jb->frames;