diff --git a/NEWS b/NEWS
index 2f99166786ca795baf18072e1b96ba1b829f84a4..44f85e16242c6f18a33cb6d29a124c69da1387be 100644
--- a/NEWS
+++ b/NEWS
@@ -21,6 +21,7 @@ documents those changes that are of interest to users and administrators.
     Issue is only in rc1.
  -- Add PrivateData value of "cloud". If set, powered down nodes in the cloud
     will be visible.
+ -- Sched/backfill - Eliminate clearing start_time of running jobs.
 
 * Changes in Slurm 14.11.0rc1
 =============================
diff --git a/src/plugins/sched/backfill/backfill.c b/src/plugins/sched/backfill/backfill.c
index b2dad0651d09007135ad17ca0693548ae0a18bb6..3b0b57ff618a2973e75891a423352234ce76da36 100644
--- a/src/plugins/sched/backfill/backfill.c
+++ b/src/plugins/sched/backfill/backfill.c
@@ -622,7 +622,7 @@ extern void *backfill_agent(void *args)
 	return NULL;
 }
 
-/* Clear the start_time for all jobs. This is used to insure that a job which
+/* Clear the start_time for all pending jobs. This is used to insure that a job which
  * can run in multiple partitions has its start_time set to the smallest
  * value in any of those partitions. */
 static void _clear_job_start_times(void)
@@ -631,8 +631,9 @@ static void _clear_job_start_times(void)
 	struct job_record *job_ptr;
 
 	job_iterator = list_iterator_create(job_list);
-	while ((job_ptr =(struct job_record *) list_next(job_iterator))) {
-		job_ptr->start_time = 0;
+	while ((job_ptr = (struct job_record *) list_next(job_iterator))) {
+		if (IS_JOB_PENDING(job_ptr))
+			job_ptr->start_time = 0;
 	}
 	list_iterator_destroy(job_iterator);
 }
@@ -838,8 +839,7 @@ static int _attempt_backfill(void)
 			xfree(job_queue_rec);
 			continue;
 		}
-		if (backfill_continue)
-			orig_start_time = job_ptr->start_time;
+		orig_start_time = job_ptr->start_time;
 		orig_time_limit = job_ptr->time_limit;
 		part_ptr = job_queue_rec->part_ptr;
 		xfree(job_queue_rec);
diff --git a/src/plugins/select/cons_res/select_cons_res.c b/src/plugins/select/cons_res/select_cons_res.c
index 3bf8c8c6a88f16ad4a02c761edd0bc64a2138713..ebddcc088b30890338de995b407aa6a4e30b4a5b 100644
--- a/src/plugins/select/cons_res/select_cons_res.c
+++ b/src/plugins/select/cons_res/select_cons_res.c
@@ -1698,7 +1698,7 @@ static int _will_run_test(struct job_record *job_ptr, bitstr_t *bitmap,
 			 select_node_usage, exc_core_bitmap);
 	if (rc == SLURM_SUCCESS) {
 		FREE_NULL_BITMAP(orig_map);
-		job_ptr->start_time = time(NULL);
+		job_ptr->start_time = now;
 		return SLURM_SUCCESS;
 	}
 
diff --git a/testsuite/expect/test31.1 b/testsuite/expect/test31.1
index d5622cd771e660239c5451b42e232dad1959f863..388a3ed8a6d91c6286cd15c3638cc8249465abc7 100755
--- a/testsuite/expect/test31.1
+++ b/testsuite/expect/test31.1
@@ -40,11 +40,16 @@ set proc             ""
 set run_host         ""
 set make_file        0
 set exit_code        0
+set pcmd_prog        "/opt/cray/nodehealth/default/bin/pcmd"
 
 print_header $test_id
 
 if {[test_cray]} {
 	set make_file 1
+	if { [file exists $pcmd_prog] == 0 } {
+		send_user "\nFAILURE: The file $pcmd_prog was not found\n"
+		exit $exit_code
+	}
 }
 if { [string compare [test_launch_type] "slurm"] } {
 	send_user "\nWARNING: This test is only compatible with systems using launch/slurm\n"
@@ -96,12 +101,12 @@ proc change_pro_epi { arg program_name conf_change task_pro } {
 }
 
 proc check_file { file_name } {
-	global test_id exit_code file_dir run_host
+	global test_id exit_code file_dir run_host pcmd_prog
 
 	sleep 1
 
 	set found 0
-	spawn /opt/cray/nodehealth/default/bin/pcmd -n $run_host "find $file_dir -name $file_name"
+	spawn $pcmd_prog -n $run_host "find $file_dir -name $file_name"
 	expect {
 		-re "$file_dir/$file_name" {
 			set found 1