diff --git a/doc/html/heterogeneous_jobs.shtml b/doc/html/heterogeneous_jobs.shtml
index 7a7756c1f9c67fcb7332891f1c3d61d0198c4d83..0c0162d4e962b9b463da3dcba3cd32fb8b07bf8f 100644
--- a/doc/html/heterogeneous_jobs.shtml
+++ b/doc/html/heterogeneous_jobs.shtml
@@ -500,6 +500,9 @@ components of a heterogeneous job.</p>
 
 <p>Slurm's PERL APIs currently do not support heterogeneous jobs.</p>
 
+<p>The srun --multi-prog option can not be used to span more than one
+heterogeneous job component.</p>
+
 <h2><a name="sys_admin">System Administrator Information</a></h2>
 
 <p>The job submit plugin is invoked independently for each component of a
@@ -576,6 +579,6 @@ especially other heterogeneous jobs.</p>
 
 <p class="footer"><a href="#top">top</a></p>
 
-<p style="text-align:center;">Last modified 29 August 2017</p>
+<p style="text-align:center;">Last modified 4 September 2017</p>
 
 <!--#include virtual="footer.txt"-->
diff --git a/src/srun/libsrun/srun_job.c b/src/srun/libsrun/srun_job.c
index 4fa92ae85a6fbb520c953dd6a1f4bf713b6dca07..a6b9087c0af58d829458be5d6cea95e6544c3b3c 100644
--- a/src/srun/libsrun/srun_job.c
+++ b/src/srun/libsrun/srun_job.c
@@ -487,6 +487,7 @@ static void _pack_grp_test(List opt_list)
 	int pack_offset;
 	bitstr_t *master_map = NULL;
 	List missing_argv_list = NULL;
+	bool multi_pack = false, multi_prog = false;
 
 	if (opt_list) {
 		missing_argv_list = list_create(NULL);
@@ -510,12 +511,15 @@ static void _pack_grp_test(List opt_list)
 			} else {
 				if (bit_overlap(master_map,
 						opt_local->pack_grp_bits)) {
-					error("Duplicate pack groups in single srun not supported");
-					exit(error_exit);
+					fatal("Duplicate pack groups in single srun not supported");
 				}
 				bit_or(master_map, opt_local->pack_grp_bits);
 			}
+			if (opt_local->multi_prog)
+				multi_prog = true;
 		}
+		if (master_map && (bit_set_count(master_map) > 1))
+			multi_pack = true;
 		FREE_NULL_BITMAP(master_map);
 		list_iterator_destroy(iter);
 		list_destroy(missing_argv_list);
@@ -525,8 +529,15 @@ static void _pack_grp_test(List opt_list)
 	} else if (!opt.pack_group && opt.pack_grp_bits) {
 		if ((pack_offset = bit_ffs(opt.pack_grp_bits)) < 0)
 			pack_offset = 0;
+		else if (bit_set_count(opt.pack_grp_bits) > 1)
+			multi_pack = true;
+		if (opt.multi_prog)
+			multi_prog = true;
 		xstrfmtcat(opt.pack_group, "%d", pack_offset);
 	}
+
+	if (multi_pack && multi_prog)
+		fatal("--multi-prog option not supported with multiple pack groups");
 }
 
 /*