Index: libs/libmythtv/dbcheck.cpp
===================================================================
--- libs/libmythtv/dbcheck.cpp	(revision 10014)
+++ libs/libmythtv/dbcheck.cpp	(working copy)
@@ -10,7 +10,7 @@
 #include "mythdbcon.h"
 
 /// This is the DB schema version expected by the running MythTV instance.
-const QString currentDatabaseVersion = "1141";
+const QString currentDatabaseVersion = "1142";
 
 static bool UpdateDBVersionNumber(const QString &newnumber);
 static bool performActualUpdate(const QString updates[], QString version,
@@ -2250,7 +2250,28 @@
             return false;
     }
 
+    if (dbver == "1141")
+    {
+        const QString updates[] = {
+"ALTER TABLE recordedmarkup DROP PRIMARY KEY, ADD PRIMARY KEY (chanid,starttime,type,mark);",
+"CREATE TABLE IF NOT EXISTS recordedseek ("
+"  chanid int(10) unsigned NOT NULL default '0',"
+"  starttime datetime NOT NULL default '0000-00-00 00:00:00',"
+"  mark bigint(20) NOT NULL default '0',"
+"  offset varchar(32) default NULL,"
+"  type int(11) NOT NULL default '0',"
+"  PRIMARY KEY  (chanid,starttime,type,mark));",
+"INSERT INTO recordedseek (chanid, starttime, mark, offset, type) SELECT"
+" chanid, starttime, mark, offset, type FROM recordedmarkup WHERE type in (6, 7, 9);",
+"DELETE FROM recordedmarkup WHERE type in (6, 7, 9);",
+"",
+};
 
+       if (!performActualUpdate(updates, "1142", dbver))
+            return false;
+    }
+
+//"ALTER TABLE recordedmarkup DROP COLUMN offset;" in 0.22
 //"ALTER TABLE capturecard DROP COLUMN dvb_recordts;" in 0.21
 //"ALTER TABLE capturecard DROP COLUMN dvb_hw_decoder;" in 0.21
 //"ALTER TABLE cardinput DROP COLUMN  preference;" in 0.22
Index: libs/libmythtv/programinfo.cpp
===================================================================
--- libs/libmythtv/programinfo.cpp	(revision 10014)
+++ libs/libmythtv/programinfo.cpp	(working copy)
@@ -1487,6 +1487,14 @@
     }
     pathname = prefix + "/" + pathname;
 
+    query.prepare("DELETE FROM recordedseek WHERE chanid = :CHANID"
+                  " AND starttime = :START;");
+    query.bindValue(":CHANID", chanid);
+    query.bindValue(":START", recstartts);
+
+    if (!query.exec() || !query.isActive())
+        MythContext::DBError("Clear seek info on record", query);
+
     query.prepare("DELETE FROM recordedmarkup WHERE chanid = :CHANID"
                   " AND starttime = :START;");
     query.bindValue(":CHANID", chanid);
@@ -2273,7 +2281,7 @@
     }
     else
     {
-        query.prepare("SELECT mark, offset FROM recordedmarkup"
+        query.prepare("SELECT mark, offset FROM recordedseek"
                       " WHERE chanid = :CHANID"
                       " AND starttime = :STARTTIME"
                       " AND type = :TYPE ;");
@@ -2303,7 +2312,7 @@
     }
     else
     {
-        query.prepare("DELETE FROM recordedmarkup"
+        query.prepare("DELETE FROM recordedseek"
                       " WHERE chanid = :CHANID"
                       " AND starttime = :STARTTIME"
                       " AND type = :TYPE ;");
@@ -2311,7 +2320,7 @@
         query.bindValue(":STARTTIME", recstartts);
     }
     query.bindValue(":TYPE", type);
-                               
+
     if (!query.exec() || !query.isActive())
         MythContext::DBError("clear position map", 
                              query);
@@ -2348,7 +2357,7 @@
     }
     else
     {
-        query.prepare("DELETE FROM recordedmarkup"
+        query.prepare("DELETE FROM recordedseek"
                       " WHERE chanid = :CHANID"
                       " AND starttime = :STARTTIME"
                       " AND type = :TYPE"
@@ -2391,7 +2400,7 @@
         }
         else
         {        
-            query.prepare("INSERT INTO recordedmarkup"
+            query.prepare("INSERT INTO recordedseek"
                           " (chanid, starttime, mark, type, offset)"
                           " VALUES"
                           " ( :CHANID , :STARTTIME , :MARK , :TYPE , :OFFSET );");
@@ -2437,7 +2446,7 @@
         }
         else
         {
-            query.prepare("INSERT INTO recordedmarkup"
+            query.prepare("INSERT INTO recordedseek"
                           " (chanid, starttime, mark, type, offset)"
                           " VALUES"
                           " ( :CHANID , :STARTTIME , :MARK , :TYPE , :OFFSET );");
Index: programs/mythtranscode/main.cpp
===================================================================
--- programs/mythtranscode/main.cpp	(revision 10014)
+++ programs/mythtranscode/main.cpp	(working copy)
@@ -653,21 +653,20 @@
         {
             query.prepare("DELETE FROM recordedmarkup "
                           "WHERE chanid = :CHANID "
-                          "AND starttime = :STARTTIME "
-                          "AND type not in ( :KEYFRAME, :GOP_BYFRAME ) ;");
+                          "AND starttime = :STARTTIME ");
             query.bindValue(":CHANID", pginfo->chanid);
             query.bindValue(":STARTTIME", pginfo->recstartts);
-            query.bindValue(":KEYFRAME", MARK_KEYFRAME);
-            query.bindValue(":GOP_BYFRAME", MARK_GOP_BYFRAME);
             query.exec();
 
             if (!query.isActive())
                 MythContext::DBError("Error in mythtranscode", query);
 
             query.prepare("UPDATE recorded "
-                          "SET cutlist = NULL, bookmark = NULL "
+                          "SET cutlist = :CUTLIST, bookmark = :BOOKMARK "
                           "WHERE chanid = :CHANID "
                           "AND starttime = :STARTTIME ;");
+            query.bindValue(":CUTLIST", "0");
+            query.bindValue(":BOOKMARK", "0");
             query.bindValue(":CHANID", pginfo->chanid);
             query.bindValue(":STARTTIME", pginfo->recstartts);
             query.exec();
@@ -682,14 +681,16 @@
             query.prepare("DELETE FROM recordedmarkup "
                           "WHERE chanid = :CHANID "
                           "AND starttime = :STARTTIME "
-                          "AND type not in ( :KEYFRAME, :GOP_BYFRAME, "
-                          "    :COMM_START, :COMM_END) ;");
+                          "AND type not in ( :COMM_START, "
+                          "    :COMM_END, :BOOKMARK, "
+                          "    :CUTLIST_START, :CUTLIST_END) ;");
             query.bindValue(":CHANID", pginfo->chanid);
             query.bindValue(":STARTTIME", pginfo->recstartts);
-            query.bindValue(":KEYFRAME", MARK_KEYFRAME);
-            query.bindValue(":GOP_BYFRAME", MARK_GOP_BYFRAME);
             query.bindValue(":COMM_START", MARK_COMM_START);
             query.bindValue(":COMM_END", MARK_COMM_END);
+            query.bindValue(":BOOKMARK", MARK_BOOKMARK);
+            query.bindValue(":CUTLIST_START", MARK_CUT_START);
+            query.bindValue(":CUTLIST_END", MARK_CUT_END);
             query.exec();
 
             if (!query.isActive())
Index: programs/mythbackend/mainserver.cpp
===================================================================
--- programs/mythbackend/mainserver.cpp	(revision 10014)
+++ programs/mythbackend/mainserver.cpp	(working copy)
@@ -1466,6 +1466,21 @@
                                    .arg(logInfo));
     }
 
+    query.prepare("DELETE FROM recordedseek "
+                  "WHERE chanid = :CHANID AND starttime = :STARTTIME;");
+    query.bindValue(":CHANID", ds->chanid);
+    query.bindValue(":STARTTIME", ds->recstartts);
+    query.exec();
+
+    if (!query.isActive())
+    {
+        MythContext::DBError("Recorded program delete recordedseek",
+                             query);
+        gContext->LogEntry("mythbackend", LP_ERROR, "Delete Recording",
+                           QString("Error deleting recordedseek for %1.")
+                                   .arg(logInfo));
+    }
+
     if (pginfo->recgroup != "LiveTV")
         ScheduledRecording::signalChange(0);
 
