diff --git a/NEWS b/NEWS
index 3a2f7224d8c2bff80e8ba9d2d7db4c53423a8250..7727b0e8f971bc10b3cc923101ac38c0f9b736f1 100644
--- a/NEWS
+++ b/NEWS
@@ -37,11 +37,16 @@ documents those changes that are of interest to users and admins.
  -- Some infrastructure added for task launch controls (slurm.conf:
     TaskProlog, TaskEpilog, TaskPlugin; srun --task-prolog, --task-epilog).
 
+* Changes in SLURM 0.6.9
+========================
+ -- Fix bug in mpi plugin to set the ID correctly
+
+
 * Changes in SLURM 0.6.8
 ========================
  -- Invalid AllowGroup value in slurm.conf to not cause seg fault.
  -- Fix bug that would cause slurmctld to seg-fault with select/cons_res
-    and batch job comtaining more than one step.
+    and batch job containing more than one step.
 
 * Changes in SLURM 0.6.7
 ========================
diff --git a/src/common/env.c b/src/common/env.c
index 409448daa35618475f4dfa53d4500e9c1399582b..8e9e917bae4ad9e475f1e465a21fea6848498460 100644
--- a/src/common/env.c
+++ b/src/common/env.c
@@ -329,12 +329,6 @@ int setup_env(env_t *env)
 		rc = SLURM_FAILURE;
 	}
 	
-	if (env->gmpi >= 0
-	    && setenvf(&env->env, "GMPI_ID", "%d", env->gmpi)) {
-		error("Unable to set GMPI_ID environment");
-		rc = SLURM_FAILURE;
-	}
-	
 	if (env->nhosts
 	    && setenvf(&env->env, "SLURM_NNODES", "%d", env->nhosts)) {
 		error("Unable to set SLURM_NNODES environment var");
@@ -365,18 +359,7 @@ int setup_env(env_t *env)
 
 		if ((dist = strchr (addrbuf, ':')) != NULL)
 			*dist = '\0';
-
 		setenvf (&env->env, "SLURM_LAUNCH_NODE_IPADDR", "%s", addrbuf);
-
-		if (getenvp(env->env, "SLURM_GMPI")) {
-			setenvf (&env->env, "GMPI_MASTER", "%s", addrbuf);
-			slurm_print_slurm_addr (env->self, 
-						addrbuf, INET_ADDRSTRLEN);
-			if ((dist = strchr (addrbuf, ':')) != NULL) 
-				*dist = '\0';
-			setenvf (&env->env, "GMPI_SLAVE", "%s", addrbuf);
-		}
-
 	}
 
 #ifdef HAVE_AIX
diff --git a/src/common/env.h b/src/common/env.h
index 1fa99a1763b400f255b36f7ae58a45f2beb08ad2..6399f54b23c006b4694dd3b4b16ef112ad9d943d 100644
--- a/src/common/env.h
+++ b/src/common/env.h
@@ -60,7 +60,6 @@ typedef struct env_options {
 	int procid;		/* global task id (across nodes) */
 	int localid;		/* local task id (within node) */
 	int nodeid;
-	int gmpi;
 	int cpus_per_task;	/* --cpus-per-task=n, -c n	*/
 	int cpus_on_node;
 	pid_t task_pid;
diff --git a/src/plugins/mpi/mpichgm/mpi_mpichgm.c b/src/plugins/mpi/mpichgm/mpi_mpichgm.c
index bf0b15ae95a8ca07f5b2ccd5e1f01eac8c9e5a3e..9a20e1db3125d90d96c046ff99ffef438b3a6262 100644
--- a/src/plugins/mpi/mpichgm/mpi_mpichgm.c
+++ b/src/plugins/mpi/mpichgm/mpi_mpichgm.c
@@ -79,9 +79,11 @@ int mpi_p_init(slurmd_job_t *job, int rank)
 	
 	if ((p = strchr (addrbuf, ':')) != NULL)
 		*p = '\0';
-	
+		
 	setenvf (&job->env, "GMPI_MASTER", "%s", addr);
 	setenvf (&job->env, "GMPI_SLAVE",  "%s", addrbuf);
+	setenvf (&job->env, "GMPI_ID",  "%d", rank);
+	debug2("init for mpi rank %d\n", rank);
 	
 	return SLURM_SUCCESS;
 }
diff --git a/src/slurmd/slurmd_job.c b/src/slurmd/slurmd_job.c
index 07a52d03d10b997567e61f786516f147cbd07166..d107109237a0f6e88e508f78ecc982b36465a11d 100644
--- a/src/slurmd/slurmd_job.c
+++ b/src/slurmd/slurmd_job.c
@@ -190,7 +190,6 @@ job_create(launch_tasks_request_msg_t *msg, slurm_addr *cli_addr)
 	job->envtp   = xmalloc(sizeof(env_t));
 	job->envtp->jobid = -1;
 	job->envtp->stepid = -1;
-	job->envtp->gmpi = -1;
 	job->envtp->procid = -1;
 	job->envtp->localid = -1;
 	job->envtp->nodeid = -1;	
@@ -263,7 +262,6 @@ job_spawn_create(spawn_task_request_msg_t *msg, slurm_addr *cli_addr)
 	job->envtp   = xmalloc(sizeof(env_t));
 	job->envtp->jobid = -1;
 	job->envtp->stepid = -1;
-	job->envtp->gmpi = -1;
 	job->envtp->procid = -1;
 	job->envtp->localid = -1;
 	job->envtp->nodeid = -1;
@@ -349,7 +347,6 @@ job_batch_job_create(batch_job_launch_msg_t *msg)
 	job->envtp   = xmalloc(sizeof(env_t));
 	job->envtp->jobid = -1;
 	job->envtp->stepid = -1;
-	job->envtp->gmpi = -1;
 	job->envtp->procid = -1;
 	job->envtp->localid = -1;
 	job->envtp->nodeid = -1;
diff --git a/src/slurmd/task.c b/src/slurmd/task.c
index 59da441fa5beb6b4ecc195d67d0d293db7557e1d..f5c5b64d55cb8a5388e25b4f2d4fc402a3cb070d 100644
--- a/src/slurmd/task.c
+++ b/src/slurmd/task.c
@@ -285,9 +285,7 @@ exec_task(slurmd_job_t *job, int i, int waitfd)
 	job->envtp->procid = t->gtid;
 	job->envtp->localid = t->id;
 	job->envtp->task_pid = getpid();
-	job->envtp->gmpi = getenvp(job->env, "SLURM_GMPI") ? t->gtid : -1;
-	
-	
+
 	setup_env(job->envtp);
 	job->env = job->envtp->env;
 	job->envtp->env = NULL;
diff --git a/src/srun/srun.c b/src/srun/srun.c
index cf70753bbe27202e73ab71224cf3ca441372cd57..2586c94205ef39e69a34a4193ad56c6974ee7816 100644
--- a/src/srun/srun.c
+++ b/src/srun/srun.c
@@ -125,7 +125,6 @@ int srun(int ac, char **av)
 	log_options_t logopt = LOG_OPTS_STDERR_ONLY;
 
 	env->stepid = -1;
-	env->gmpi = -1;
 	env->procid = -1;
 	env->localid = -1;
 	env->nodeid = -1;