Index: programs/mythfrontend/globalsettings.cpp
===================================================================
--- programs/mythfrontend/globalsettings.cpp	(revision 6948)
+++ programs/mythfrontend/globalsettings.cpp	(working copy)
@@ -514,6 +514,7 @@
     bc->setLabel(QObject::tr("Auto Expire Method"));
     bc->addSelection(QObject::tr("None"), "0");
     bc->addSelection(QObject::tr("Oldest Show First"), "1");
+    bc->addSelection(QObject::tr("Lowest Priority First"), "2");
     bc->setHelpText(QObject::tr("Method used to determine which recorded "
                                 "shows to delete first. Set to 'None' to "
                                 "disable Auto Expire (not recommended)."));
Index: programs/mythbackend/autoexpire.cpp
===================================================================
--- programs/mythbackend/autoexpire.cpp	(revision 6948)
+++ programs/mythbackend/autoexpire.cpp	(working copy)
@@ -467,7 +467,10 @@
 
     switch(expMethod)
     {
-        case 1: FillOldestFirst(); break;
+        case 1:
+        case 2:
+            FillOldestFirst(expMethod);
+            break;
 
         // default falls through so list is empty so no AutoExpire
     }
@@ -512,19 +515,61 @@
 /** \fn AutoExpire::FillOldestFirst()
  *  \brief Creates a list of programs to delete, with the oldest file listed first.
  */
-void AutoExpire::FillOldestFirst(void)
+void AutoExpire::FillOldestFirst(int expMethod)
 {
     QString fileprefix = gContext->GetFilePrefix();
 
     MSqlQuery query(MSqlQuery::InitCon());
-    QString querystr = QString(
-               "SELECT recorded.chanid,starttime,endtime,title,subtitle, "
-               "description,hostname,channum,name,callsign,seriesid,programid "
-               "FROM recorded "
-               "LEFT JOIN channel ON recorded.chanid = channel.chanid "
-               "WHERE autoexpire > 0 "
-               "ORDER BY autoexpire DESC, starttime ASC");
+    QString querystr;
+    
+    switch (expMethod)
+    {
+    default:
+    case 1: // Oldest first
+        querystr = QString(
+                "SELECT recorded.chanid"
+                "   ,starttime"
+                "   ,endtime"
+                "   ,title"
+                "   ,subtitle"
+                "   ,description"
+                "   ,hostname"
+                "   ,channum"
+                "   ,name"
+                "   ,callsign"
+                "   ,seriesid"
+                "   ,programid"
+                " FROM recorded"
+                " LEFT JOIN channel ON recorded.chanid = channel.chanid"
+                " WHERE autoexpire > 0"
+                " ORDER BY autoexpire DESC"
+                "   ,starttime ASC");
+        break;
 
+    case 2: // Lowest priority first
+        querystr = QString(
+                "SELECT d.chanid"
+                "   ,d.starttime"
+                "   ,d.endtime"
+                "   ,d.title"
+                "   ,d.subtitle"
+                "   ,d.description"
+                "   ,hostname"
+                "   ,channum"
+                "   ,name"
+                "   ,callsign"
+                "   ,d.seriesid"
+                "   ,d.programid"
+                " FROM recorded d"
+                " LEFT JOIN channel ON d.chanid = channel.chanid"
+                " LEFT JOIN record r ON d.recordid = r.recordid"
+                " WHERE d.autoexpire > 0"
+                " ORDER BY d.autoexpire DESC"
+                "   ,r.recpriority ASC"
+                "   ,d.starttime ASC");
+        break;
+    }
+
     query.prepare(querystr);
 
     if (!query.exec() || !query.isActive() || !query.size())
Index: programs/mythbackend/autoexpire.h
===================================================================
--- programs/mythbackend/autoexpire.h	(revision 6948)
+++ programs/mythbackend/autoexpire.h	(working copy)
@@ -34,7 +34,7 @@
   private:
     void ExpireEpisodesOverMax(void);
 
-    void FillOldestFirst(void);
+    void FillOldestFirst(int expMethod);
     void SendDeleteMessages(size_t, size_t);
     void ClearExpireList(void);
     void Sleep();
