Feature added by Bill van Melle: when no timezone is present, assume
local time -- that's better than failure.
diff --git a/Doc/lib/librfc822.tex b/Doc/lib/librfc822.tex
index aa7e459..d764ce6 100644
--- a/Doc/lib/librfc822.tex
+++ b/Doc/lib/librfc822.tex
@@ -47,11 +47,13 @@
 for Greenwich Mean Time).  (Note that the sign of the timezone offset
 is the opposite of the sign of the \code{time.timezone} variable for
 the same timezone; the latter variable follows the \POSIX{} standard
-while this module follows \rfc{822}.)
+while this module follows \rfc{822}.)  If the input string has no
+timezone, the last element of the tuple returned is \code{None}.
 \end{funcdesc}
 
 \begin{funcdesc}{mktime_tz}{tuple}
 Turn a 10-tuple as returned by \code{parsedate_tz()} into a UTC timestamp.
+It the timezone item in the tuple is \code{None}, assume local time.
 Minor deficiency: this first interprets the first 8 elements as a
 local time and then compensates for the timezone difference;
 this may yield a slight error around daylight savings time
diff --git a/Doc/librfc822.tex b/Doc/librfc822.tex
index aa7e459..d764ce6 100644
--- a/Doc/librfc822.tex
+++ b/Doc/librfc822.tex
@@ -47,11 +47,13 @@
 for Greenwich Mean Time).  (Note that the sign of the timezone offset
 is the opposite of the sign of the \code{time.timezone} variable for
 the same timezone; the latter variable follows the \POSIX{} standard
-while this module follows \rfc{822}.)
+while this module follows \rfc{822}.)  If the input string has no
+timezone, the last element of the tuple returned is \code{None}.
 \end{funcdesc}
 
 \begin{funcdesc}{mktime_tz}{tuple}
 Turn a 10-tuple as returned by \code{parsedate_tz()} into a UTC timestamp.
+It the timezone item in the tuple is \code{None}, assume local time.
 Minor deficiency: this first interprets the first 8 elements as a
 local time and then compensates for the timezone difference;
 this may yield a slight error around daylight savings time
diff --git a/Lib/rfc822.py b/Lib/rfc822.py
index f58543a..967a85e 100644
--- a/Lib/rfc822.py
+++ b/Lib/rfc822.py
@@ -660,7 +660,7 @@
         tss = string.atoi(tss)
     except string.atoi_error:
         return None
-    tzoffset=0
+    tzoffset=None
     tz=string.upper(tz)
     if _timezones.has_key(tz):
         tzoffset=_timezones[tz]
@@ -670,10 +670,13 @@
         except string.atoi_error: 
             pass
     # Convert a timezone offset into seconds ; -0500 -> -18000
-    if tzoffset<0: tzsign=-1
-    else: tzsign=1
-    tzoffset=tzoffset*tzsign
-    tzoffset = tzsign * ( (tzoffset/100)*3600 + (tzoffset % 100)*60)
+    if tzoffset:
+	if tzoffset < 0:
+	    tzsign = -1
+	    tzoffset = -tzoffset
+	else:
+	    tzsign = 1
+	tzoffset = tzsign * ( (tzoffset/100)*3600 + (tzoffset % 100)*60)
     tuple = (yy, mm, dd, thh, tmm, tss, 0, 0, 0, tzoffset)
     return tuple
 
@@ -695,8 +698,12 @@
     switch dates.  Not enough to worry about for common use.
     
     """
-    t = time.mktime(data[:8] + (0,))
-    return t - data[9] - time.timezone
+    if data[9] is None:
+	# No zone info, so localtime is better assumption than GMT
+	return time.mktime(data[:8] + (-1,))
+    else:
+	t = time.mktime(data[:8] + (0,))
+	return t - data[9] - time.timezone
 
 
 # When used as script, run a small test program.