diff --git a/Lib/mhlib.py b/Lib/mhlib.py
index d4869c6..912f001 100644
--- a/Lib/mhlib.py
+++ b/Lib/mhlib.py
@@ -98,9 +98,9 @@
 
     def __init__(self, path = None, profile = None):
         """Constructor."""
-        if not profile: profile = MH_PROFILE
+        if profile is None: profile = MH_PROFILE
         self.profile = os.path.expanduser(profile)
-        if not path: path = self.getprofile('Path')
+        if path is None: path = self.getprofile('Path')
         if not path: path = PATH
         if not os.path.isabs(path) and path[0] != '~':
             path = os.path.join('~', path)
@@ -665,7 +665,7 @@
         """Constructor."""
         self.folder = f
         self.number = n
-        if not fp:
+        if fp is None:
             path = f.getmessagefilename(n)
             fp = open(path, 'r')
         mimetools.Message.__init__(self, fp)
@@ -679,7 +679,7 @@
         argument is specified, it is used as a filter predicate to
         decide which headers to return (its argument is the header
         name converted to lower case)."""
-        if not pred:
+        if pred is None:
             return ''.join(self.headers)
         headers = []
         hit = 0
@@ -791,7 +791,7 @@
         self.pairs = []
         self.sep = sep
         self.rng = rng
-        if data: self.fromstring(data)
+        if data is not None: self.fromstring(data)
 
     def reset(self):
         self.pairs = []
diff --git a/Lib/netrc.py b/Lib/netrc.py
index 9ce7efb..316a66c 100644
--- a/Lib/netrc.py
+++ b/Lib/netrc.py
@@ -21,7 +21,7 @@
 
 class netrc:
     def __init__(self, file=None):
-        if not file:
+        if file is None:
             try:
                 file = os.path.join(os.environ['HOME'], ".netrc")
             except KeyError:
diff --git a/Lib/poplib.py b/Lib/poplib.py
index 0525043..0b22b2e 100644
--- a/Lib/poplib.py
+++ b/Lib/poplib.py
@@ -220,7 +220,7 @@
         Result when a message number argument is given is a
         single response: the "scan listing" for that message.
         """
-        if which:
+        if which is not None:
             return self._shortcmd('LIST %s' % which)
         return self._longcmd('LIST')
 
@@ -313,7 +313,7 @@
         in the form 'response mesgnum uid', otherwise result is
         the list ['response', ['mesgnum uid', ...], octets]
         """
-        if which:
+        if which is not None:
             return self._shortcmd('UIDL %s' % which)
         return self._longcmd('UIDL')
 
diff --git a/Lib/pprint.py b/Lib/pprint.py
index 1c11593..523572b 100644
--- a/Lib/pprint.py
+++ b/Lib/pprint.py
@@ -101,7 +101,7 @@
         self.__depth = depth
         self.__indent_per_level = indent
         self.__width = width
-        if stream:
+        if stream is not None:
             self.__stream = stream
         else:
             self.__stream = sys.stdout
diff --git a/Lib/profile.py b/Lib/profile.py
index fa3527f..c1001f9 100755
--- a/Lib/profile.py
+++ b/Lib/profile.py
@@ -150,7 +150,7 @@
             bias = self.bias
         self.bias = bias     # Materialize in local dict for lookup speed.
 
-        if not timer:
+        if timer is None:
             if os.name == 'mac':
                 self.timer = MacOS.GetTicks
                 self.dispatcher = self.trace_dispatch_mac
diff --git a/Lib/pstats.py b/Lib/pstats.py
index 126d0be..c5d8c38 100644
--- a/Lib/pstats.py
+++ b/Lib/pstats.py
@@ -506,7 +506,7 @@
         def __init__(self, profile=None):
             cmd.Cmd.__init__(self)
             self.prompt = "% "
-            if profile:
+            if profile is not None:
                 self.stats = Stats(profile)
             else:
                 self.stats = None
diff --git a/Lib/py_compile.py b/Lib/py_compile.py
index afeaae1..ce67584 100644
--- a/Lib/py_compile.py
+++ b/Lib/py_compile.py
@@ -67,7 +67,7 @@
             sys.stderr.write(line.replace('File "<string>"',
                                             'File "%s"' % (dfile or file)))
         return
-    if not cfile:
+    if cfile is None:
         cfile = file + (__debug__ and 'c' or 'o')
     fc = open(cfile, 'wb')
     fc.write('\0\0\0\0')
