diff --git a/Lib/logging/handlers.py b/Lib/logging/handlers.py
index 559404f..19aefa6 100644
--- a/Lib/logging/handlers.py
+++ b/Lib/logging/handlers.py
@@ -182,7 +182,7 @@
         else:
             raise ValueError("Invalid rollover interval specified: %s" % self.when)
 
-        self.interval *= interval # multiply by units requested
+        self.interval = self.interval * interval # multiply by units requested
         self.rolloverAt = currentTime + self.interval
 
         # If we are rolling over at midnight or weekly, then the interval is already known.
@@ -200,8 +200,8 @@
             currentSecond = t[5]
             # r is the number of seconds left between now and midnight
             r = (24 - currentHour) * 60 * 60 # number of hours in seconds
-            r += (59 - currentMinute) * 60 # plus the number of minutes (in secs)
-            r += (59 - currentSecond) # plus the number of seconds
+            r = r + (59 - currentMinute) * 60 # plus the number of minutes (in secs)
+            r = r + (59 - currentSecond) # plus the number of seconds
             self.rolloverAt = currentTime + r
             # If we are rolling over on a certain day, add in the number of days until
             # the next rollover, but offset by 1 since we just calculated the time
@@ -219,10 +219,10 @@
                 day = t[6] # 0 is Monday
                 if day > self.dayOfWeek:
                     daysToWait = (day - self.dayOfWeek) - 1
-                    self.rolloverAt += (daysToWait * (60 * 60 * 24))
+                    self.rolloverAt = self.rolloverAt + (daysToWait * (60 * 60 * 24))
                 if day < self.dayOfWeek:
                     daysToWait = (6 - self.dayOfWeek) + day
-                    self.rolloverAt += (daysToWait * (60 * 60 * 24))
+                    self.rolloverAt = self.rolloverAt + (daysToWait * (60 * 60 * 24))
 
         #print "Will rollover at %d, %d seconds from now" % (self.rolloverAt, self.rolloverAt - currentTime)
 
@@ -656,6 +656,24 @@
         """
         return self.subject
 
+    weekdayname = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
+
+    monthname = [None,
+                 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
+                 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
+
+    def date_time(self):
+        """
+        Return the current date and time formatted for a MIME header.
+        Needed for Python 1.5.2 (no email package available)
+        """
+        year, month, day, hh, mm, ss, wd, y, z = time.gmtime(time.time())
+        s = "%s, %02d %3s %4d %02d:%02d:%02d GMT" % (
+                self.weekdayname[wd],
+                day, self.monthname[month], year,
+                hh, mm, ss)
+        return s
+
     def emit(self, record):
         """
         Emit a record.
@@ -664,7 +682,10 @@
         """
         try:
             import smtplib
-            from email.Utils import formatdate
+            try:
+                from email.Utils import formatdate
+            except:
+                formatdate = self.date_time
             port = self.mailport
             if not port:
                 port = smtplib.SMTP_PORT
