diff --git a/NEWS b/NEWS
index a1345c7b2175b37507ed4aa18e5135037d868950..caec6a3636701cc1a89dfdc78dc4ed6b288918a2 100644
--- a/NEWS
+++ b/NEWS
@@ -17,6 +17,7 @@ documents those changes that are of interest to users and admins.
  -- Removed addresses from slurm_step_layout_t
  -- Added new job field, "comment". Set by srun, salloc and sbatch. See 
     with "scontrol show job". Used in sched/wiki2.
+ -- Report a job's exit status in "scontrol show job".
 
 * Changes in SLURM 1.2.0-pre2
 =============================
diff --git a/doc/man/man1/scontrol.1 b/doc/man/man1/scontrol.1
index ccec95e2eba6b1464d4f3d211c21bfc39cdd59db..3552eb4e28a441f3148f2f696e22476f888ad165 100644
--- a/doc/man/man1/scontrol.1
+++ b/doc/man/man1/scontrol.1
@@ -1,4 +1,4 @@
-.TH SCONTROL "1" "May 2006" "scontrol 1.2" "Slurm components"
+.TH SCONTROL "1" "September 2006" "scontrol 1.2" "Slurm components"
 
 .SH "NAME"
 scontrol \- Used view and modify Slurm configuration and state.
@@ -180,7 +180,7 @@ Display the version number of scontrol being executed.
 \fI!!\fP
 Repeat the last command executed.
 .TP
-\fBSPECIFICATIONS FOR UPDATE COMMAND, JOBS\fR
+\fBSPECIFICATIONS FOR SHOW AND UPDATE COMMANDS, JOBS\fR
 .TP
 \fIAccount\fP=<account>
 Account name to be changed for this job's resource use.
@@ -194,6 +194,12 @@ Possible values are"YES" and "NO".
 Defer job's initiation until specified job_id completes.
 Cancel dependency with job_id value of "0", "Depedency=0".
 .TP
+\fIExitCode\fP=<exit>:<sig>
+Exit status reported for the job by the wait() function.
+The first number is the exit code, typically as set by the exit() function.
+The second number of the signal that caused the process to terminate if
+it was terminated by a signal.
+.TP
 \fIFeatures\fP=<features>
 Set the job's required features on nodes specified value. Multiple values 
 may be comma separated if all features are required (AND operation) or 
diff --git a/slurm/slurm.h.in b/slurm/slurm.h.in
index 9f6e44ed0cb94fb6347c728702bf15d9a97b9641..abbf104325799f8446fd3b6688f55f182b94fc52 100644
--- a/slurm/slurm.h.in
+++ b/slurm/slurm.h.in
@@ -470,6 +470,7 @@ typedef struct job_info {
 				 * start_range_2, .., -1  */
 	char *features;		/* comma separated list of required features */
 	uint32_t dependency;	/* defer until specified job completes */
+	uint32_t exit_code;	/* exit code for job (status from wait call) */
 	char *account;		/* charge to specified account */
 	uint16_t wait_reason;	/* reason job still pending, see
 				 * slurm.h:enum job_wait_reason */
diff --git a/src/api/job_info.c b/src/api/job_info.c
index 92e007e51a5fa399ec3249b8d015b2e2da5b157f..5597d95d04eac64278ffcec0be5d1f8e092e4486 100644
--- a/src/api/job_info.c
+++ b/src/api/job_info.c
@@ -47,6 +47,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <sys/types.h>
+#include <sys/wait.h>
 #include <time.h>
 
 #include <slurm/slurm.h>
@@ -117,6 +118,7 @@ slurm_sprint_job_info ( job_info_t * job_ptr, int one_liner )
 	char tmp_line[128];
 	uint16_t quarter = (uint16_t) NO_VAL;
 	uint16_t nodecard = (uint16_t) NO_VAL;
+	uint16_t term_sig = 0;
 	char *out = NULL;
 	
 #ifdef HAVE_BG
@@ -178,9 +180,15 @@ slurm_sprint_job_info ( job_info_t * job_ptr, int one_liner )
 	if (job_ptr->time_limit == INFINITE)
 		sprintf(tmp_line, "UNLIMITED");
 	else if (job_ptr->time_limit == NO_VAL)
-		sprintf(tmp_line, "Partition_Limit");
+		sprintf(tmp_line, "Partition_Limit ");
 	else
-		sprintf(tmp_line, "%u", job_ptr->time_limit);
+		sprintf(tmp_line, "%u ", job_ptr->time_limit);
+	xstrcat(out, tmp_line);
+	if (WIFSIGNALED(job_ptr->exit_code))
+		term_sig = WTERMSIG(job_ptr->exit_code);
+	snprintf(tmp_line, sizeof(tmp_line),
+		"ExitCode=%u:%u", 
+		WEXITSTATUS(job_ptr->exit_code), term_sig);
 	xstrcat(out, tmp_line);
 	if (one_liner)
 		xstrcat(out, " ");
diff --git a/src/common/slurm_protocol_pack.c b/src/common/slurm_protocol_pack.c
index d33e191dd717e23a51d717c4a737146a1c35eaa5..941b0d7a2f4b8652f3f94478fa2c22fcbebdb2c6 100644
--- a/src/common/slurm_protocol_pack.c
+++ b/src/common/slurm_protocol_pack.c
@@ -1929,6 +1929,7 @@ _unpack_job_info_members(job_info_t * job, Buf buffer)
 	safe_unpackstr_xmalloc(&job->network, &uint16_tmp, buffer);
 	safe_unpackstr_xmalloc(&job->comment, &uint16_tmp, buffer);
 	safe_unpack32(&job->dependency, buffer);
+	safe_unpack32(&job->exit_code, buffer);
 
 	safe_unpackstr_xmalloc(&job->name, &uint16_tmp, buffer);
 	safe_unpackstr_xmalloc(&job->alloc_node, &uint16_tmp, buffer);
diff --git a/src/slurmctld/job_mgr.c b/src/slurmctld/job_mgr.c
index e1a37ddefb0930a3a664887b42ebb0505237bbbd..6e612e28edef39a0ad7089dea1249a8410c5059a 100644
--- a/src/slurmctld/job_mgr.c
+++ b/src/slurmctld/job_mgr.c
@@ -2797,6 +2797,7 @@ void pack_job(struct job_record *dump_job_ptr, Buf buffer)
 	packstr(dump_job_ptr->network, buffer);
 	packstr(dump_job_ptr->comment, buffer);
 	pack32((uint32_t)dump_job_ptr->dependency, buffer);
+	pack32((uint32_t)dump_job_ptr->exit_code, buffer);
 
 	packstr(dump_job_ptr->name, buffer);
 	packstr(dump_job_ptr->alloc_node, buffer);
diff --git a/src/slurmctld/slurmctld.h b/src/slurmctld/slurmctld.h
index 67ecc367373aed6e0713b1fdae2699b8eb0f1741..6566915f97602fcc799acd911046e08ae7c41bcf 100644
--- a/src/slurmctld/slurmctld.h
+++ b/src/slurmctld/slurmctld.h
@@ -356,7 +356,8 @@ struct job_record {
 	uint16_t mail_type;		/* see MAIL_JOB_* in slurm.h */
 	char *mail_user;		/* user to get e-mail notification */
 	uint32_t requid;            	/* requester user ID */
-	uint32_t exit_code;		/* exit code for the job */
+	uint32_t exit_code;		/* exit code for job (status from 
+					 * wait call) */
 };
 
 struct 	step_record {