diff --git a/NEWS b/NEWS
index dce07bb040d382d7dba4a2855dd850f3f884080d..da3ba38822cfc3f6988498823f3be238aec149ad 100644
--- a/NEWS
+++ b/NEWS
@@ -120,7 +120,9 @@ documents those changes that are of interest to users and admins.
  -- Remove registration messages from saved messages when bringing down cluster.
     Without causes deadlock if wrong cluster name is given.
  -- Correction to build like for srun debugger (export symbols).
-  
+ -- sacct will now display more properly allocations made with salloc with only 
+    one step.
+
 * Changes in SLURM 1.3.10
 =========================
  -- Fix several bugs in the hostlist functions:
@@ -702,6 +704,8 @@ documents those changes that are of interest to users and admins.
  -- For spank_get_item(S_JOB_ARGV) for batch job with script input via STDIN,
     set argc value to 1 (rather than 2, argv[0] still set to path of generated
     script).
+ -- sacct will now display more properly allocations made with salloc with only 
+    one step.
 
 * Changes in SLURM 1.2.35
 =========================
diff --git a/src/plugins/accounting_storage/filetxt/filetxt_jobacct_process.c b/src/plugins/accounting_storage/filetxt/filetxt_jobacct_process.c
index eb17140bed11ebfa00b5663d273742609991057b..0af14a311f97fb1c956cbb5a265fbb9b74acb4b9 100644
--- a/src/plugins/accounting_storage/filetxt/filetxt_jobacct_process.c
+++ b/src/plugins/accounting_storage/filetxt/filetxt_jobacct_process.c
@@ -911,8 +911,22 @@ static void _process_step(List job_list, char *f[], int lc,
 	step = temp;
 	temp = NULL;
 	list_append(job->steps, step);
-	if(list_count(job->steps) > 1)
-		job->track_steps = 1;
+	if(!job->track_steps) {
+		/* If we don't have track_steps we want to see
+		   if we have multiple steps.  If we only have
+		   1 step check the job name against the step
+		   name in most all cases it will be
+		   different.  If it is different print out
+		   the step separate.
+		*/
+		if(list_count(job->steps) > 1) 
+			job->track_steps = 1;
+		else if(step && step->stepname && job->jobname) {
+			if(strcmp(step->stepname, job->jobname))
+				job->track_steps = 1;
+		}
+	}
+	
 	if(job->header.timestamp == 0)
 		job->header.timestamp = step->header.timestamp;
 	job->job_step_seen = 1;
diff --git a/src/plugins/accounting_storage/mysql/mysql_jobacct_process.c b/src/plugins/accounting_storage/mysql/mysql_jobacct_process.c
index 1f816e03921e550c76c0868e6146f4acf8ad7611..1e4b21ee6233dc0b355d2c743c5a5b23486617ec 100644
--- a/src/plugins/accounting_storage/mysql/mysql_jobacct_process.c
+++ b/src/plugins/accounting_storage/mysql/mysql_jobacct_process.c
@@ -734,8 +734,21 @@ no_cond:
 		}
 		mysql_free_result(step_result);
 		
-		if(list_count(job->steps) > 1)
-			job->track_steps = 1;
+		if(!job->track_steps) {
+			/* If we don't have track_steps we want to see
+			   if we have multiple steps.  If we only have
+			   1 step check the job name against the step
+			   name in most all cases it will be
+			   different.  If it is different print out
+			   the step separate.
+			*/
+			if(list_count(job->steps) > 1) 
+				job->track_steps = 1;
+			else if(step && step->stepname && job->jobname) {
+				if(strcmp(step->stepname, job->jobname))
+					job->track_steps = 1;
+			}
+               }
 	}
 	mysql_free_result(result);
 
diff --git a/src/plugins/accounting_storage/pgsql/pgsql_jobacct_process.c b/src/plugins/accounting_storage/pgsql/pgsql_jobacct_process.c
index 7b3bc6ab7759e3b0eb305800ec8e15b15fbc51ec..1456e1956c9c882f1559a2c77cf4d2b5748d5f70 100644
--- a/src/plugins/accounting_storage/pgsql/pgsql_jobacct_process.c
+++ b/src/plugins/accounting_storage/pgsql/pgsql_jobacct_process.c
@@ -685,8 +685,21 @@ no_cond:
 		}
 		PQclear(step_result);
 
-		if(list_count(job->steps) > 1)
-			job->track_steps = 1;
+		if(!job->track_steps) {
+			/* If we don't have track_steps we want to see
+			   if we have multiple steps.  If we only have
+			   1 step check the job name against the step
+			   name in most all cases it will be
+			   different.  If it is different print out
+			   the step separate.
+			*/
+			if(list_count(job->steps) > 1) 
+				job->track_steps = 1;
+			else if(step && step->stepname && job->jobname) {
+				if(strcmp(step->stepname, job->jobname))
+					job->track_steps = 1;
+			}
+               }
 	}
 	PQclear(result);