diff --git a/doc/man/man1/sacct.1 b/doc/man/man1/sacct.1
index 6ff80c535b7adcda5ddaaad5d9e9e41276c065c1..505e44cce1aa16b3c5d69868db66a3beef9329f8 100644
--- a/doc/man/man1/sacct.1
+++ b/doc/man/man1/sacct.1
@@ -49,12 +49,12 @@ gather and report incomplete information for these calls;
 \f2getrusage(3)\fP man page for information about which data are
 actually available on your system.
 .IP
-If --dump is specified, the field selection options (--brief,
---fields, ...) have no effect. 
+If \-\-dump is specified, the field selection options (\-\-brief,
+\-\-format, ...) have no effect. 
 .IP
 Elapsed time fields are presented as 2 fields, integral seconds and integral microseconds
 .IP
-If --dump is not specified, elapsed time fields are presented as
+If \-\-dump is not specified, elapsed time fields are presented as
 [[days-]hours:]minutes:seconds.hundredths.
 .IP
 The default input file is the file named in the jobacct_logfile
@@ -118,21 +118,15 @@ data output when this option is used.
 .TP 
 \f3\-\-duplicates\fP
 If SLURM job ids are reset, but the job accounting log file isn't
-reset at the same time (with -e, for example), some job numbers will
+reset at the same time (with \-e, for example), some job numbers will
 probably appear more than once in the accounting log file to refer to
 different jobs; such jobs can be distinguished by the "submit" time
 stamp in the data records.
 .IP 
-When data for specific jobs are requested with the --jobs option, we
+When data for specific jobs are requested with the \-\-jobs option, we
 assume that the user wants to see only the most recent job with that
-number. This behavior can be overridden by specifying --duplicates, in
+number. This behavior can be overridden by specifying \-\-duplicates, in
 which case all records that match the selection criteria will be returned.
-.IP
-When --jobs is not specified, we report data for all jobs that match
-the selection criteria, even if some of the job numbers are
-reused. Specify that you only want the most recent job for each
-selected job number with the --noduplicates option.
-
 
 .TP
 \f3\-e \fP\f3,\fP \f3\-\-helpformat\fP
diff --git a/src/plugins/select/bluegene/plugin/bg_record_functions.c b/src/plugins/select/bluegene/plugin/bg_record_functions.c
index e23e675fa94d6878f0cafec7dd8cfc2477290f50..68e0147659278ef5e957fa18d499a9967402a615 100644
--- a/src/plugins/select/bluegene/plugin/bg_record_functions.c
+++ b/src/plugins/select/bluegene/plugin/bg_record_functions.c
@@ -990,6 +990,7 @@ extern int down_nodecard(char *bp_name, bitoff_t io_start)
 		/* Translate 1 nodecard count to ionode count */
 		if((io_cnt *= bluegene_io_ratio))
 			io_cnt--;
+
 		/* make sure we create something that is able to be
 		   created */
 		if(bluegene_smallest_block < bluegene_nodecard_node_cnt)
@@ -1004,6 +1005,16 @@ extern int down_nodecard(char *bp_name, bitoff_t io_start)
 		       bp_name);
 		return EINVAL;
 	}
+
+	/* this is here for sanity check to make sure we don't core on
+	   these bits when we set them below. */
+	if(io_start >= bluegene_numpsets 
+	   || (io_start+io_cnt) >= bluegene_numpsets) {
+		debug("io %d-%d not configured on this "
+		      "system, only %d ionodes per midplane",
+		      io_start, io_start+io_cnt, bluegene_numpsets);
+		return EINVAL;
+	}
 	bp_bit = (node_ptr - node_record_table_ptr);
 	
 	memset(&blockreq, 0, sizeof(blockreq_t));
diff --git a/src/plugins/select/bluegene/plugin/state_test.c b/src/plugins/select/bluegene/plugin/state_test.c
index 242982838e6ca8087e26e3901c34350bce0fb06c..c49d1c400999b386db47697731549cc93ed082b9 100644
--- a/src/plugins/select/bluegene/plugin/state_test.c
+++ b/src/plugins/select/bluegene/plugin/state_test.c
@@ -183,7 +183,16 @@ static int _test_down_nodecards(rm_BP_t *bp_ptr)
 		rc = SLURM_ERROR;
 		goto clean_up;
 	}
-	
+
+	/* make sure we have this midplane in the system */
+	if(coord[X] >= DIM_SIZE[X]
+	   || coord[Y] >= DIM_SIZE[Y]
+	   || coord[Z] >= DIM_SIZE[Z]) {
+		debug4("node %s isn't configured", bp_id);
+		rc = SLURM_SUCCESS;
+		goto clean_up;
+	}
+
 	node_name = xstrdup_printf("%s%c%c%c",
 				   bg_slurm_node_prefix,
 				   alpha_num[coord[X]], 
@@ -263,11 +272,28 @@ static int _test_down_nodecards(rm_BP_t *bp_ptr)
 		io_start = atoi((char*)nc_name+1);
 		io_start *= bluegene_io_ratio;
 #endif
-
+		/* On small systems with less than a midplane the
+		   database may see the nodecards there but in missing
+		   state.  To avoid getting a bunch of warnings here just
+		   skip over the ones missing.
+		*/
+		if(io_start >= bluegene_numpsets) {
+			if(state == RM_NODECARD_MISSING) {
+				debug3("Nodecard %s is missing continue",
+				       nc_name);
+			} else {
+				error("We don't have the system configured "
+				      "for this nodecard %s, we only have "
+				      "%d ionodes and this starts at %d", 
+				      nc_name, io_start, bluegene_numpsets);
+			}
+			free(nc_name);
+			continue;
+		}
 /* 		if(!ionode_bitmap)  */
 /* 			ionode_bitmap = bit_alloc(bluegene_numpsets); */
-/* 		info("setting %d-%d of %d", */
-/* 		     io_start, io_start+io_cnt, bluegene_numpsets); */
+/* 		info("setting %s start %d of %d", */
+/* 		     nc_name,  io_start, bluegene_numpsets); */
 /* 		bit_nset(ionode_bitmap, io_start, io_start+io_cnt); */
 		/* we have to handle each nodecard separately to make
 		   sure we don't create holes in the system */