Index: libs/libmythtv/guidegrid.h
===================================================================
--- libs/libmythtv/guidegrid.h	(revision 12593)
+++ libs/libmythtv/guidegrid.h	(working copy)
@@ -154,6 +154,7 @@
 
     bool selectState;
     bool showFavorites;
+    bool sortReverse;
     QString channelFormat;
 
     int desiredDisplayChans;
Index: libs/libmythtv/guidegrid.cpp
===================================================================
--- libs/libmythtv/guidegrid.cpp	(revision 12593)
+++ libs/libmythtv/guidegrid.cpp	(working copy)
@@ -137,6 +137,7 @@
     }
 
     scrolltype = gContext->GetNumSetting("EPGScrollType", 1);
+    sortReverse = gContext->GetNumSetting("EPGSortReverse", 0);
 
     selectChangesChannel = gContext->GetNumSetting("SelectChangesChannel", 0);
     selectRecThreshold = gContext->GetNumSetting("SelChangeRecThreshold", 16);
@@ -582,13 +583,18 @@
     bool startingset = false;
     for (uint i = 0; i < channels.size(); i++)
     {
+        uint chan=i;
+        if (sortReverse)
+        {
+            chan=channels.size()-i-1;
+        }
         ChannelInfo val;
-        val.chanstr  = channels[i].channum;
-        val.chanid   = channels[i].chanid;
-        val.callsign = channels[i].callsign;
-        val.favid    = channels[i].favorite;
-        val.channame = channels[i].name;
-        val.iconpath = channels[i].icon;
+        val.chanstr  = channels[chan].channum;
+        val.chanid   = channels[chan].chanid;
+        val.callsign = channels[chan].callsign;
+        val.favid    = channels[chan].favorite;
+        val.channame = channels[chan].name;
+        val.iconpath = channels[chan].icon;
         val.iconload = false;
 
         // set starting channel index if it hasn't been set
Index: programs/mythfrontend/globalsettings.cpp
===================================================================
--- programs/mythfrontend/globalsettings.cpp	(revision 12593)
+++ programs/mythfrontend/globalsettings.cpp	(working copy)
@@ -2115,6 +2115,17 @@
     return gc;
 }
 
+static HostCheckBox *EPGSortReverse()
+{
+    HostCheckBox *gc = new HostCheckBox("EPGSortReverse");
+    gc->setLabel(QObject::tr("Reverse Channel Order"));
+    gc->setValue(false);
+    gc->setHelpText(QObject::tr("If enabled, the program guide will be sorted "
+                    "in reverse order with lower numbered channels towards "
+                    "the bottom."));
+    return gc;
+}
+
 static HostComboBox *EPGFillType()
 {
     HostComboBox *gc = new HostComboBox("EPGFillType");
@@ -3679,6 +3690,7 @@
     epg->addChild(EPGShowCategoryColors());
     epg->addChild(EPGShowCategoryText());
     epg->addChild(EPGScrollType());
+    epg->addChild(EPGSortReverse());
     epg->addChild(EPGShowChannelIcon());
     epg->addChild(EPGShowFavorites());
     epg->addChild(WatchTVGuide());
