Index: dvbcut/src/buffer.cpp
===================================================================
RCS file: /var/cvs/sys/qt3/dvbcut/src/buffer.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- dvbcut/src/buffer.cpp	23 Jun 2006 12:13:30 -0000	1.4
+++ dvbcut/src/buffer.cpp	24 Aug 2006 23:46:48 -0000	1.5
@@ -299,6 +299,7 @@
         pos+=pagesize;
         if (pos<0)
           pos=0;
+        readpos=position-pos;
         }
       writepos=filesize-pos;
 
Index: dvbcut/src/index.cpp
===================================================================
RCS file: /var/cvs/sys/qt3/dvbcut/src/index.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- dvbcut/src/index.cpp	29 Jul 2006 17:52:27 -0000	1.2
+++ dvbcut/src/index.cpp	24 Aug 2006 23:57:04 -0000	1.3
@@ -429,7 +429,7 @@
         ++skipfirst;
     }
 
-  realpictures=pictures-skipfirst-1;
+  realpictures=pictures-skipfirst;
   if (realpictures<1)
     return 0;
 
Index: dvbcut/src/mpgfile.cpp
===================================================================
RCS file: /var/cvs/sys/qt3/dvbcut/src/mpgfile.cpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- dvbcut/src/mpgfile.cpp	6 Aug 2006 00:09:20 -0000	1.5
+++ dvbcut/src/mpgfile.cpp	24 Aug 2006 23:57:20 -0000	1.6
@@ -123,9 +123,11 @@
   int last_cpn=-1;
   bool firstframe=true, firstsequence=true;
 
-  while (pic<stop && (streampic+1)<idx.getrealpictures()) {
-    filepos_t tp=idx[streampic+1].getpos();
-    while (sd->itemlist().empty() || sd->itemlist().back().fileposition<tp)
+  while (pic<stop && streampic<idx.getpictures()) {
+    filepos_t tp(getfilesize(),0);
+    if ((streampic+1)<idx.getpictures())
+      tp=idx[streampic+1].getpos();
+    while (sd->itemlist().empty() || s.fileposition<tp.fileposition())
       if (streamreader(s)<=0)
         break;
 
