diff --git a/Lib/atexit.py b/Lib/atexit.py
index 61f2458..b5929fc 100644
--- a/Lib/atexit.py
+++ b/Lib/atexit.py
@@ -29,15 +29,11 @@
     _exithandlers.append((func, targs, kargs))
 
 import sys
-try:
-    x = sys.exitfunc
-except AttributeError:
-    sys.exitfunc = _run_exitfuncs
-else:
-    # if x isn't our own exit func executive, assume it's another
-    # registered exit function - append it to our list...
-    if x != _run_exitfuncs:
-        register(x)
+if hasattr(sys, "exitfunc"):
+    # Assume it's another registered exit function - append it to our list
+    register(sys.exitfunc)
+sys.exitfunc = _run_exitfuncs
+
 del sys
 
 if __name__ == "__main__":
diff --git a/Lib/test/output/test_atexit b/Lib/test/output/test_atexit
deleted file mode 100644
index 1cc01de..0000000
--- a/Lib/test/output/test_atexit
+++ /dev/null
@@ -1,4 +0,0 @@
-test_atexit
-handler2 (7,) {'kw': 'abc'}
-handler2 () {}
-handler1
diff --git a/Lib/test/test_atexit.py b/Lib/test/test_atexit.py
index 517610b..07f5a7e 100644
--- a/Lib/test/test_atexit.py
+++ b/Lib/test/test_atexit.py
@@ -1,5 +1,9 @@
-# Test the exit module
-from test_support import verbose
+# Test the atexit module.
+from test_support import TESTFN, vereq
+import atexit
+import os
+
+input = """\
 import atexit
 
 def handler1():
@@ -8,17 +12,50 @@
 def handler2(*args, **kargs):
     print "handler2", args, kargs
 
-# save any exit functions that may have been registered as part of the
-# test framework
-_exithandlers = atexit._exithandlers
-atexit._exithandlers = []
-
 atexit.register(handler1)
 atexit.register(handler2)
 atexit.register(handler2, 7, kw="abc")
+"""
 
-# simulate exit behavior by calling atexit._run_exitfuncs directly...
-atexit._run_exitfuncs()
+fname = TESTFN + ".py"
+f = file(fname, "w")
+f.write(input)
+f.close()
 
-# restore exit handlers
-atexit._exithandlers = _exithandlers
+p = os.popen("python " + fname)
+output = p.read()
+p.close()
+vereq(output, """\
+handler2 (7,) {'kw': 'abc'}
+handler2 () {}
+handler1
+""")
+
+input = """\
+def direct():
+    print "direct exit"
+
+import sys
+sys.exitfunc = direct
+
+# Make sure atexit doesn't drop 
+def indirect():
+    print "indirect exit"
+
+import atexit
+atexit.register(indirect)
+"""
+
+f = file(fname, "w")
+f.write(input)
+f.close()
+
+p = os.popen("python " + fname)
+output = p.read()
+p.close()
+vereq(output, """\
+indirect exit
+direct exit
+""")
+
+os.unlink(fname)
