diff --git a/src/smap/grid_functions.c b/src/smap/grid_functions.c
index f9261c70a2782d916f8c6f40c70b4be9900fdcee..259e9123bd3c9871eb7fbf383b5968c174610949 100644
--- a/src/smap/grid_functions.c
+++ b/src/smap/grid_functions.c
@@ -27,29 +27,39 @@
 
 #include "src/smap/smap.h"
 
-
-int set_grid(int start, int end, int count)
+extern int set_grid(int start, int end, int count)
 {
 	int x, y, z;
-	for (y = DIM_SIZE[Y] - 1; y >= 0; y--)
-		for (z = 0; z < DIM_SIZE[Z]; z++)
+
+	for (y = DIM_SIZE[Y] - 1; y >= 0; y--) {
+		for (z = 0; z < DIM_SIZE[Z]; z++) {
 			for (x = 0; x < DIM_SIZE[X]; x++) {
-				if (pa_system_ptr->grid[x][y][z].indecies >= start && pa_system_ptr->grid[x][y][z].indecies <= end) {
-					if (pa_system_ptr->grid[x][y][z].state != NODE_STATE_DOWN || pa_system_ptr->grid[x][y][z].state != NODE_STATE_DRAINED || pa_system_ptr->grid[x][y][z].state != NODE_STATE_DRAINING) {
-						pa_system_ptr->grid[x][y][z].letter = pa_system_ptr->fill_in_value[count].letter;
-						pa_system_ptr->grid[x][y][z].color = pa_system_ptr->fill_in_value[count].color;
-					}
-				}
+				if ((pa_system_ptr->grid[x][y][z].indecies < start)
+				||  (pa_system_ptr->grid[x][y][z].indecies > end)) 
+					continue;
+				if ((pa_system_ptr->grid[x][y][z].state == NODE_STATE_DOWN)
+				||  (pa_system_ptr->grid[x][y][z].state == NODE_STATE_DRAINED)
+				||  (pa_system_ptr->grid[x][y][z].state == NODE_STATE_DRAINING))
+					continue;
+
+				pa_system_ptr->grid[x][y][z].letter = 
+					pa_system_ptr->
+					fill_in_value[count].letter;
+				pa_system_ptr->grid[x][y][z].color = 
+					pa_system_ptr->
+					fill_in_value[count].color;
 			}
+		}
+	}
 
 	return 1;
 }
 
-int set_grid_bgl(int startx, int starty, int startz, int endx, int endy,
-		 int endz, int count)
+extern int set_grid_bgl(int startx, int starty, int startz, 
+		int endx, int endy, int endz, int count, bool lower)
 {
 	int x, y, z;
-	int i = 0;
+	int i = 0, offset;
 	assert(endx < DIM_SIZE[X]);
 	assert(startx >= 0);
 	assert(endy < DIM_SIZE[Y]);
@@ -58,19 +68,31 @@ int set_grid_bgl(int startx, int starty, int startz, int endx, int endy,
 	assert(startz >= 0);
 	assert(count < pa_system_ptr->num_of_proc);
 	assert(count >= 0);
-	for (x = startx; x <= endx; x++)
-		for (y = starty; y <= endy; y++)
+
+	if (lower)
+		offset = 32;
+	else
+		offset = 0;
+
+	for (x = startx; x <= endx; x++) {
+		for (y = starty; y <= endy; y++) {
 			for (z = startz; z <= endz; z++) {
-				pa_system_ptr->grid[x][y][z].letter = pa_system_ptr->fill_in_value[count].letter;
-				pa_system_ptr->grid[x][y][z].color = pa_system_ptr->fill_in_value[count].color;
+				pa_system_ptr->grid[x][y][z].letter = 
+					pa_system_ptr->
+					fill_in_value[count].letter + offset;
+				pa_system_ptr->grid[x][y][z].color = 
+					pa_system_ptr->
+					fill_in_value[count].color;
 				i++;
 			}
+		}
+	}
 
 	return i;
 }
 
-/* _print_grid - print values of every grid point */
-void print_grid(void)
+/* print_grid - print values of every grid point */
+extern void print_grid(void)
 {
 	int x, y, z, i = 0, offset = DIM_SIZE[Z];
 	int grid_xcord, grid_ycord = 2;
diff --git a/src/smap/partition_functions.c b/src/smap/partition_functions.c
index 2e5b782490efc3d07dc3b0cdc2bf7f3f0e1d5ddb..6898fc0a367acbab9e25459372ff734b29d46fff 100644
--- a/src/smap/partition_functions.c
+++ b/src/smap/partition_functions.c
@@ -78,6 +78,7 @@ void get_part(void)
 	char node_entry[13];
 	int start, startx, starty, startz, endx, endy, endz;
 	db2_block_info_t *block_ptr;
+	bool lower;
 
 	if (part_info_ptr) {
 		error_code = slurm_load_partitions(part_info_ptr->last_update, 
@@ -138,17 +139,24 @@ void get_part(void)
 					endz = (start % 10);
 					j += 5;
 
+					block_ptr = _find_part_db2(part.allow_groups);
+					lower = false;
+					if (block_ptr) {
+						block_ptr->printed = true;
+						if (block_ptr->bgl_conn_type ==
+								SELECT_TORUS)
+							lower = true;
+					}
 					part.total_nodes =  set_grid_bgl(startx, 
 							starty, startz, endx, 
-							endy, endz, count);
+							endy, endz, count, lower);
 					part.root_only = (int) pa_system_ptr->
 							fill_in_value[count].letter;
+					if (lower)
+						part.root_only += 32;
 					wattron(pa_system_ptr->text_win, 
 							COLOR_PAIR(pa_system_ptr->
 							fill_in_value[count].color));
-					block_ptr = _find_part_db2(part.allow_groups);
-					if (block_ptr)
-						block_ptr->printed = true;
 					_print_text_part(&part, block_ptr);
 					wattroff(pa_system_ptr->text_win, 
 							COLOR_PAIR(pa_system_ptr->
@@ -442,10 +450,17 @@ static int _print_rest(void *object, void *arg)
 	int *count = (int *) arg;
 	int start, startx, starty, startz, endx, endy, endz;
 	partition_info_t part;
+	bool lower;
 
 	if (block_ptr->printed)
 		return SLURM_SUCCESS;
 
+	/* lower case letters for TORUS connect */
+	if (block_ptr->bgl_conn_type == SELECT_TORUS)
+		lower = true;
+	else
+		lower = false;
+
 	if (block_ptr->nodes[11] == ']') {	/* "bgl[###x###]" */
 		start = atoi(block_ptr->nodes + 4);
 		startx = start / 100;
@@ -456,7 +471,7 @@ static int _print_rest(void *object, void *arg)
 		endy = (start % 100) / 10;
 		endz = (start % 10);
 		set_grid_bgl(startx, starty, startz,
-			endx, endy, endz, *count);
+			endx, endy, endz, *count, lower);
 	} else {				/* any other format */
 		hostlist_t hostlist;
 		hostlist_iterator_t host_iter;
@@ -472,7 +487,7 @@ static int _print_rest(void *object, void *arg)
 			starty = endy = (start % 100) / 10;
 			startz = endz = (start % 10);
 			set_grid_bgl(startx, starty, startz,
-				endx, endy, endz, *count);
+				endx, endy, endz, *count, lower);
 			free(host_name);
 		}
 		hostlist_iterator_destroy(host_iter);
@@ -482,10 +497,10 @@ static int _print_rest(void *object, void *arg)
 	part.name = NULL;
 	part.allow_groups = block_ptr->nodes;
 	part.root_only = (int) pa_system_ptr->fill_in_value[*count].letter;
-//	if (block_ptr->bgl_conn_type == SELECT_TORUS)
-//		part.root_only += 32;
 	wattron(pa_system_ptr->text_win, 
 		COLOR_PAIR(pa_system_ptr->fill_in_value[*count].color));
+	if (lower)
+		part.root_only += 32;
 	_print_text_part(&part, block_ptr);
 	wattroff(pa_system_ptr->text_win,
 		COLOR_PAIR(pa_system_ptr->fill_in_value[*count].color));
diff --git a/src/smap/smap.h b/src/smap/smap.h
index a1990197f2e3b2082cf78d85f727923b11e20964..710bde7041cd856c0cd3eaf3c608ceb22aa2744f 100644
--- a/src/smap/smap.h
+++ b/src/smap/smap.h
@@ -56,6 +56,7 @@
 #  include "src/common/getopt.h"
 #endif
 
+#include "src/common/macros.h"
 #include <slurm/slurm.h>
 
 #include "src/common/slurm_protocol_api.h"
@@ -102,10 +103,10 @@ extern int quiet_flag;
 
 
 void init_grid(node_info_msg_t * node_info_ptr);
-int set_grid(int start, int end, int count);
-int set_grid_bgl(int startx, int starty, int startz, int endx, int endy,
-		 int endz, int count);
-void print_grid();
+extern int set_grid(int start, int end, int count);
+extern int set_grid_bgl(int startx, int starty, int startz, 
+		int endx, int endy, int endz, int count, bool lower);
+extern void print_grid(void);
 
 void parse_command_line(int argc, char *argv[]);
 void snprint_time(char *buf, size_t buf_size, time_t time);