diff --git a/mythtv/libs/libmythtv/programdata.cpp b/mythtv/libs/libmythtv/programdata.cpp
index 06e822f..d1a0ae8 100644
--- a/mythtv/libs/libmythtv/programdata.cpp
+++ b/mythtv/libs/libmythtv/programdata.cpp
@@ -996,7 +996,8 @@ void ProgramData::FixProgramList(QList<ProgInfo*> &fixlist)
                 {
                     (*cur)->endtime = QDateTime(
                         (*cur)->endtime.date().addDays(1),
-                        QTime(0, 0), Qt::UTC);
+                        QTime(0, 0), Qt::LocalTime);
+                    (*cur)->endtime = (*cur)->endtime.toUTC();
                 }
 
                 (*cur)->endts =
@@ -1138,7 +1139,7 @@ int ProgramData::fix_end_times(void)
     MSqlQuery query1(MSqlQuery::InitCon()), query2(MSqlQuery::InitCon());
 
     querystr = "SELECT chanid, starttime, endtime FROM program "
-               "WHERE (DATE_FORMAT(endtime,'%H%i') = '0000') "
+               "WHERE (DATE_FORMAT(CONVERT_TZ(endtime, 'UTC', 'SYSTEM'),'%H%i') = '0000') "
                "ORDER BY chanid, starttime;";
 
     if (!query1.exec(querystr))
@@ -1155,11 +1156,11 @@ int ProgramData::fix_end_times(void)
         endtime = query1.value(2).toString();
 
         querystr = QString("SELECT chanid, starttime, endtime FROM program "
-                           "WHERE starttime BETWEEN '%1 00:00:00'"
-                           "AND '%2 23:59:59' AND chanid = '%3' "
+                           "WHERE starttime > '%1'"
+                           "AND starttime <= ADDTIME('%2', '1 00:00:00.0') AND chanid = '%3' "
                            "ORDER BY starttime LIMIT 1;")
-                           .arg(endtime.left(10))
-                           .arg(endtime.left(10))
+                           .arg(starttime) 
+                           .arg(starttime)
                            .arg(chanid);
 
         if (!query2.exec(querystr))
