diff --git a/remake.c b/remake.c
index 63ee648..df1a9e0 100644
--- a/remake.c
+++ b/remake.c
@@ -320,7 +320,7 @@
             && !f->dontcare && f->no_diag))
         {
           DBF (DB_VERBOSE, _("Pruning file '%s'.\n"));
-          return f->command_state == cs_finished ? f->update_status : 0;
+          return f->command_state == cs_finished ? f->update_status : us_success;
         }
     }
 
@@ -344,12 +344,9 @@
 
       if (f->command_state == cs_running
           || f->command_state == cs_deps_running)
-        {
-          /* Don't run the other :: rules for this
-             file until this rule is finished.  */
-          status = us_success;
-          break;
-        }
+        /* Don't run other :: rules for this target until
+           this rule is finished.  */
+        return us_success;
 
       if (new > status)
         status = new;
@@ -1274,6 +1271,7 @@
 f_mtime (struct file *file, int search)
 {
   FILE_TIMESTAMP mtime;
+  int propagate_timestamp;
 
   /* File's mtime is not known; must get it from the system.  */
 
@@ -1450,10 +1448,13 @@
         }
     }
 
-  /* Store the mtime into all the entries for this file.  */
+  /* Store the mtime into all the entries for this file for which it is safe
+     to do so: avoid propagating timestamps to double-colon rules that haven't
+     been examined so they're run or not based on the pre-update timestamp.  */
   if (file->double_colon)
     file = file->double_colon;
 
+  propagate_timestamp = file->updated;
   do
     {
       /* If this file is not implicit but it is intermediate then it was
@@ -1465,7 +1466,8 @@
           && !file->tried_implicit && file->intermediate)
         file->intermediate = 0;
 
-      file->last_mtime = mtime;
+      if (file->updated == propagate_timestamp)
+        file->last_mtime = mtime;
       file = file->prev;
     }
   while (file != 0);
diff --git a/tests/scripts/features/double_colon b/tests/scripts/features/double_colon
index 1097775..80ddb31 100644
--- a/tests/scripts/features/double_colon
+++ b/tests/scripts/features/double_colon
@@ -151,8 +151,7 @@
 
 unlink('result','one','two');
 
-# TEST 10: check for proper backslash handling
-#          Savannah bug #33399
+# TEST 10: SV 33399 : check for proper backslash handling
 
 run_make_test('
 a\ xb :: ; @echo one
@@ -160,5 +159,47 @@
 ',
               '', "one\ntwo\n");
 
+# Test 11: SV 44742 : All double-colon rules should be run in parallel build.
+
+run_make_test('result :: 01
+	@echo update
+	@touch $@
+result :: 02
+	@echo update
+	@touch $@
+result :: 03
+	@echo update
+	@touch $@
+result :: 04
+	@echo update
+	@touch $@
+result :: 05
+	@echo update
+	@touch $@
+01 02 03 04 05:
+	@touch 01 02 03 04 05
+',
+              '-j10 result', "update\nupdate\nupdate\nupdate\nupdate\n");
+
+unlink('result', '01', '02', '03', '04', '05');
+
+# Test 12: SV 44742 : Double-colon rules with parallelism
+
+run_make_test('
+root: all
+	echo root
+all::
+	echo all_one
+all:: 3
+	echo all_two
+%:
+	sleep $*
+',
+              '-rs -j2 1 2 root', "all_one\nall_two\nroot\n");
+
 # This tells the test driver that the perl test script executed properly.
 1;
+
+### Local Variables:
+### eval: (setq whitespace-action (delq 'auto-cleanup whitespace-action))
+### End:
