diff --git a/Lib/test/test_import.py b/Lib/test/test_import.py
index dbfadfb7..8196865 100644
--- a/Lib/test/test_import.py
+++ b/Lib/test/test_import.py
@@ -1,5 +1,6 @@
 import unittest
 import os
+import stat
 import random
 import shutil
 import sys
@@ -7,7 +8,7 @@
 import warnings
 import imp
 import marshal
-from test.support import unlink, TESTFN, unload, run_unittest
+from test.support import unlink, TESTFN, unload, run_unittest, TestFailed
 
 
 def remove_files(name):
@@ -80,6 +81,32 @@
         finally:
             del sys.path[0]
 
+    @unittest.skipUnless(os.name == 'posix', "test meaningful only on posix systems")
+    def test_execute_bit_not_copied(self):
+        # Issue 6070: under posix .pyc files got their execute bit set if
+        # the .py file had the execute bit set, but they aren't executable.
+        oldmask = os.umask(0o022)
+        sys.path.insert(0, os.curdir)
+        try:
+            fname = TESTFN + os.extsep + "py"
+            f = open(fname, 'w').close()
+            os.chmod(fname, (stat.S_IRUSR | stat.S_IRGRP | stat.S_IROTH |
+                             stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH))
+            __import__(TESTFN)
+            fn = fname + 'c'
+            if not os.path.exists(fn):
+                fn = fname + 'o'
+                if not os.path.exists(fn): raise TestFailed("__import__ did "
+                    "not result in creation of either a .pyc or .pyo file")
+            s = os.stat(fn)
+            self.assertEquals(stat.S_IMODE(s.st_mode),
+                              stat.S_IRUSR | stat.S_IRGRP | stat.S_IROTH)
+        finally:
+            os.umask(oldmask)
+            remove_files(TESTFN)
+            if TESTFN in sys.modules: del sys.modules[TESTFN]
+            del sys.path[0]
+
     def testImpModule(self):
         # Verify that the imp module can correctly load and find .py files
         import imp
@@ -230,6 +257,7 @@
         else:
             self.fail("import by path didn't raise an exception")
 
+
 class TestPycRewriting(unittest.TestCase):
     # Test that the `co_filename` attribute on code objects always points
     # to the right file, even when various things happen (e.g. both the .py
diff --git a/Python/import.c b/Python/import.c
index bccb971..2b82587 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -930,7 +930,11 @@
 {
 	FILE *fp;
 	time_t mtime = srcstat->st_mtime;
-	mode_t mode = srcstat->st_mode;
+#ifdef MS_WINDOWS   /* since Windows uses different permissions  */
+	mode_t mode = srcstat->st_mode & ~S_IEXEC;
+#else
+	mode_t mode = srcstat->st_mode & ~S_IXUSR & ~S_IXGRP & ~S_IXOTH;
+#endif 
 
 	fp = open_exclusive(cpathname, mode);
 	if (fp == NULL) {
