diff --git a/src/smap/job_functions.c b/src/smap/job_functions.c
index d614272b264be2fda01fd361a48dd07077fbc8da..cc4e8d5383a50c74aa340bad1b8c9ba499922fc8 100644
--- a/src/smap/job_functions.c
+++ b/src/smap/job_functions.c
@@ -57,7 +57,6 @@ extern void get_job(void)
 				"slurm_load_job: %s", 
 				slurm_strerror(slurm_get_errno()));
 			pa_system_ptr->ycord++;
-			return;
 		}
 	}
 
diff --git a/src/smap/partition_functions.c b/src/smap/partition_functions.c
index 27843e35d336e29905cfb2e05e1ffd3e2d08bf21..afbbf6bf34a79717a059db41b268e147740a08a5 100644
--- a/src/smap/partition_functions.c
+++ b/src/smap/partition_functions.c
@@ -42,6 +42,7 @@ typedef struct {
 	char *nodes;
 	enum connection_type bgl_conn_type;
 	enum node_use_type bgl_node_use;
+	rm_partition_state_t state;
 	hostlist_t hostlist;
 	bool printed;
 } db2_block_info_t;
@@ -53,6 +54,7 @@ static char* _convert_node_use(enum node_use_type node_use);
 static db2_block_info_t *
 _find_part_db2(char *nodelist);
 static void _print_header_part(void);
+static char *_part_state_str(rm_partition_state_t state);
 static int  _print_text_part(partition_info_t * part_ptr, 
 			     db2_block_info_t *db2_info_ptr);
 static void _read_part_db2(void);
@@ -235,20 +237,23 @@ static void _print_header_part(void)
 	mvwprintw(pa_system_ptr->text_win, pa_system_ptr->ycord,
 		  pa_system_ptr->xcord, "PARTITION");
 	pa_system_ptr->xcord += 10;
-	mvwprintw(pa_system_ptr->text_win, pa_system_ptr->ycord,
-		  pa_system_ptr->xcord, "AVAIL");
-	pa_system_ptr->xcord += 7;
 	
 	if (params.display != BGLPART) {
+		mvwprintw(pa_system_ptr->text_win, pa_system_ptr->ycord,
+			  pa_system_ptr->xcord, "AVAIL");
+		pa_system_ptr->xcord += 7;
 		mvwprintw(pa_system_ptr->text_win, pa_system_ptr->ycord,
 			  pa_system_ptr->xcord, "TIMELIMIT");
 		pa_system_ptr->xcord += 11;
 	} else {
 		mvwprintw(pa_system_ptr->text_win, pa_system_ptr->ycord,
-			  pa_system_ptr->xcord, "USER");
+			  pa_system_ptr->xcord, "BGL_BLOCK");
 		pa_system_ptr->xcord += 12;
 		mvwprintw(pa_system_ptr->text_win, pa_system_ptr->ycord,
-			  pa_system_ptr->xcord, "BGL_BLOCK");
+			  pa_system_ptr->xcord, "STATE");
+		pa_system_ptr->xcord += 8;
+		mvwprintw(pa_system_ptr->text_win, pa_system_ptr->ycord,
+			  pa_system_ptr->xcord, "USER");
 		pa_system_ptr->xcord += 12;
 		mvwprintw(pa_system_ptr->text_win, pa_system_ptr->ycord,
 			  pa_system_ptr->xcord, "CONN");
@@ -267,6 +272,31 @@ static void _print_header_part(void)
 	pa_system_ptr->ycord++;
 }
 
+static char *_part_state_str(rm_partition_state_t state)
+{
+	static char tmp[16];
+
+	switch (state) {
+		case RM_PARTITION_BUSY: 
+			return "BUSY";
+		case RM_PARTITION_CONFIGURING:
+			return "CONFIG";
+		case RM_PARTITION_DEALLOCATING:
+			return "DEALLOC";
+		case RM_PARTITION_ERROR:
+			return "ERROR";
+		case RM_PARTITION_FREE:
+			return "FREE";
+		case RM_PARTITION_NAV:
+			return "NAV";
+		case RM_PARTITION_READY:
+			return "READY";
+		default:
+			snprintf(tmp, sizeof(tmp), "%d", state);
+			return tmp;
+	}
+}
+
 static int _print_text_part(partition_info_t * part_ptr, 
 			    db2_block_info_t *db2_info_ptr)
 {
@@ -285,42 +315,46 @@ static int _print_text_part(partition_info_t * part_ptr,
 		mvwprintw(pa_system_ptr->text_win, pa_system_ptr->ycord,
 			  pa_system_ptr->xcord, "%.9s", part_ptr->name);
 		pa_system_ptr->xcord += 10;
-		if (part_ptr->state_up)
-			mvwprintw(pa_system_ptr->text_win, pa_system_ptr->ycord,
-				  pa_system_ptr->xcord, "UP");
-		else
-			mvwprintw(pa_system_ptr->text_win, pa_system_ptr->ycord,
-				  pa_system_ptr->xcord, "DOWN");
-		pa_system_ptr->xcord += 7;
-
-		if (part_ptr->max_time == INFINITE)
-			snprintf(time_buf, sizeof(time_buf), "UNLIMITED");
-		else {
-			snprint_time(time_buf, sizeof(time_buf), 
-				     (part_ptr->max_time * 60));
-		}
-
 		if (params.display != BGLPART) {
+			if (part_ptr->state_up)
+				mvwprintw(pa_system_ptr->text_win, pa_system_ptr->ycord,
+					  pa_system_ptr->xcord, "UP");
+			else
+				mvwprintw(pa_system_ptr->text_win, pa_system_ptr->ycord,
+					  pa_system_ptr->xcord, "DOWN");
+			pa_system_ptr->xcord += 7;
+			
+			if (part_ptr->max_time == INFINITE)
+				snprintf(time_buf, sizeof(time_buf), "UNLIMITED");
+			else {
+				snprint_time(time_buf, sizeof(time_buf), 
+					     (part_ptr->max_time * 60));
+			}
+			
 			width = strlen(time_buf);
 			mvwprintw(pa_system_ptr->text_win, pa_system_ptr->ycord,
 				  pa_system_ptr->xcord + (9 - width), "%s", 
 				  time_buf);
 			pa_system_ptr->xcord += 11;
-		}
+		} 
 	} else
-		pa_system_ptr->xcord += 17;
+		pa_system_ptr->xcord += 10;
 
 	if (params.display == BGLPART) {
 		if (db2_info_ptr) {
 			mvwprintw(pa_system_ptr->text_win, pa_system_ptr->ycord,
 				  pa_system_ptr->xcord, "%.11s", 
-				  db2_info_ptr->bgl_user_name);
+				  db2_info_ptr->bgl_block_name);
 			pa_system_ptr->xcord += 12;
+			mvwprintw(pa_system_ptr->text_win, pa_system_ptr->ycord,
+				  pa_system_ptr->xcord, _part_state_str(db2_info_ptr->state));
+				pa_system_ptr->xcord += 8;
+				
 			mvwprintw(pa_system_ptr->text_win, pa_system_ptr->ycord,
 				  pa_system_ptr->xcord, "%.11s", 
-				  db2_info_ptr->bgl_block_name);
+				  db2_info_ptr->bgl_user_name);
 			pa_system_ptr->xcord += 12;
-
+			
 			mvwprintw(pa_system_ptr->text_win, pa_system_ptr->ycord,
 				  pa_system_ptr->xcord, "%.5s", 
 				  _convert_conn_type(
@@ -335,6 +369,9 @@ static int _print_text_part(partition_info_t * part_ptr,
 			mvwprintw(pa_system_ptr->text_win, pa_system_ptr->ycord,
 				  pa_system_ptr->xcord, "?");
 			pa_system_ptr->xcord += 12;
+			mvwprintw(pa_system_ptr->text_win, pa_system_ptr->ycord,
+				  pa_system_ptr->xcord, "?");
+			pa_system_ptr->xcord += 8;
 			mvwprintw(pa_system_ptr->text_win, pa_system_ptr->ycord,
 				  pa_system_ptr->xcord, "?");
 			pa_system_ptr->xcord += 12;
@@ -683,6 +720,14 @@ static void _read_part_db2(void)
 			block_ptr->bgl_block_name = xstrdup(part_id);
 			
 
+			if ((rc = rm_get_data(part_ptr, 
+					      RM_PartitionState, 
+					      &block_ptr->state)) != STATUS_OK) {
+				fprintf(stderr, "rm_get_data("
+					"RM_PartitionState): %s\n",
+					bgl_err_str(rc));
+			}				
+			
 			if ((rc = rm_get_data(part_ptr, 
 					      RM_PartitionUserName, 
 					      &block_ptr->bgl_user_name)) != STATUS_OK) {