--- classes/listingThread.js.orig	2016-08-31 22:59:26.000000000 -0700
+++ classes/listingThread.js	2016-09-25 09:28:22.745671700 -0700
@@ -35,6 +35,7 @@
                 var response = JSON.parse(http.responseText);
                 console.info("@@@ Procesing " + response.listings.length + " listings in worker thread @@@-" + payLoad[0]);
                 var listingsHTML = "";
+                var max_e = 0;
                 for (i = 0; i < response.listings.length; i++) {
                     var listing = response.listings[i];
                     var s = Math.round((listing.start - startTime) / 60);
@@ -45,6 +46,9 @@
                     if (e > (60 * 60))
                         e = (60 * 60);
 
+                    if (e > max_e)
+                        max_e = e;
+
                     var cssClass = "";
                     var currentEvent = false;
 
@@ -105,6 +109,7 @@
                 };
                 payLoad[1] = http.responseText;
                 payLoad[2] = listingsHTML;
+                payLoad[3] = max_e * 4;
                 console.info("@@@ Posting back to main thread @@@-" + payLoad[0]);
                 self.postMessage(payLoad);
             } else {
--- guide.html.orig	2016-09-17 11:52:26.000000000 -0700
+++ guide.html	2016-09-25 10:09:27.894356000 -0700
@@ -358,6 +358,8 @@
             var chnlcnt = 0;
             var chnlcnt2 = 0;
             var scrolled = false;
+            var ordinary_width = 48 * 120;
+            var max_width = ordinary_width;
 
             var worker1 = new Worker("classes/listingThread.js");
             var worker2 = new Worker("classes/listingThread.js");
@@ -478,7 +480,7 @@
                         var startDate = selectedDate;
                         startDate.setHours(0, 0, 0, 0); // last midnight
                         var startTime = startDate.getTime() / 1000;
-                        var endTime = startTime + 86400;
+                        var endTime = startTime + 86400 - 1;
 
                         displayStart = moment();
 
@@ -497,6 +499,10 @@
                             tFoot.append(timeEntry);
                             timeSlots.add(30, 'minutes');
                         }
+                        var pad_suf = ' style="float: left; width: 0px; height: 35px;display: inline-block;">&hellip;</div>';
+                        tHead.append('<div id="tc-pad1"' + pad_suf);
+                        tFoot.append('<div id="tc-pad2"' + pad_suf);
+
                         $('#channels-column').empty();
                         $('#listings-column').empty();
                         //$('#guideContainer').attr('style', 'visibility: hidden');
@@ -512,6 +518,8 @@
                         worker6.terminate();
                         worker7.terminate();
 
+                        max_width = ordinary_width;
+
                         worker1 = new Worker("classes/listingThread.js");
                         worker2 = new Worker("classes/listingThread.js");
                         worker3 = new Worker("classes/listingThread.js");
@@ -547,7 +555,7 @@
                             currentTime = (new Date()).getTime() / 1000;
                             startDate.setHours(0, 0, 0, 0); // last midnight
                             startTime = startDate.getTime() / 1000;
-                            endTime = startTime + 86400;
+                            endTime = startTime + 86400 - 1;
                             var iconURL = "";
 
                             //$('#guideContainer').removeAttr('style');
@@ -802,6 +810,18 @@
                 // set the divs for this row of the guide. 
                 $("#row-" + payLoad[0]).html(payLoad[2]);
 
+                if (payLoad[3] > max_width) {
+                    max_width = payLoad[3];
+                    var tHead = $('#time-container');
+                    var tFoot = $('#time-container2');
+                    var tPad1 = $('#tc-pad1');
+                    var tPad2 = $('#tc-pad2');
+                    tHead.width(max_width);
+                    tFoot.width(max_width);
+                    tPad1.width(max_width - ordinary_width);
+                    tPad2.width(max_width - ordinary_width);
+                }
+
                 var displayEnd = moment();
                 console.log("procesed listing in: " + displayEnd.diff(displayStart) / 1000 + " channel count: " + chnlcnt + " listings: " + chnlcnt2 + " dropped: " + (chnlcnt - chnlcnt2));
 
