diff --git a/src/api/job_info.c b/src/api/job_info.c
index aa3db1a498760d277fe3666dbb14bb323ee9b2c8..04c8f0dc5e528b073ce29f4e33d351221103d07e 100644
--- a/src/api/job_info.c
+++ b/src/api/job_info.c
@@ -230,14 +230,13 @@ slurm_sprint_job_info ( job_info_t * job_ptr, int one_liner )
 	}
 	sprintf(tmp_line, " %sIndices=", nodelist);
 	xstrcat(out, tmp_line);
-	for (j = 0; job_ptr->node_inx; j++) {
+	for (j = 0;  (job_ptr->node_inx && (job_ptr->node_inx[j] != -1)); 
+			j+=2) {
 		if (j > 0)
-			sprintf(tmp_line, ",%d", job_ptr->node_inx[j]);
-		else
-			sprintf(tmp_line, "%d", job_ptr->node_inx[j]);
+			 xstrcat(out, ",");
+		sprintf(tmp_line, "%d-%d", job_ptr->node_inx[j], 
+			job_ptr->node_inx[j+1]);
 		xstrcat(out, tmp_line);
-		if (job_ptr->node_inx[j] == -1)
-			break;
 	}
 	if (one_liner)
 		xstrcat(out, " ");
@@ -296,14 +295,13 @@ slurm_sprint_job_info ( job_info_t * job_ptr, int one_liner )
 	snprintf(tmp_line, sizeof(tmp_line), "Req%s=%s Req%sIndices=", 
 		nodelist, job_ptr->req_nodes, nodelist);
 	xstrcat(out, tmp_line);
-	for (j = 0; job_ptr->req_node_inx; j++) {
+	for (j = 0; (job_ptr->req_node_inx && (job_ptr->req_node_inx[j] != -1));
+			j+=2) {
 		if (j > 0)
-			sprintf(tmp_line, ",%d", job_ptr->req_node_inx[j]);
-		else
-			sprintf(tmp_line, "%d", job_ptr->req_node_inx[j]);
+			xstrcat(out, ",");
+		sprintf(tmp_line, "%d-%d", job_ptr->req_node_inx[j],
+			job_ptr->req_node_inx[j+1]);
 		xstrcat(out, tmp_line);
-		if (job_ptr->req_node_inx[j] == -1)
-			break;
 	}
 	if (one_liner)
 		xstrcat(out, " ");
@@ -314,14 +312,13 @@ slurm_sprint_job_info ( job_info_t * job_ptr, int one_liner )
 	snprintf(tmp_line, sizeof(tmp_line), "Exc%s=%s Exc%sIndices=", 
 		nodelist, job_ptr->exc_nodes, nodelist);
 	xstrcat(out, tmp_line);
-	for (j = 0; job_ptr->exc_node_inx; j++) {
+	for (j = 0; (job_ptr->exc_node_inx && (job_ptr->exc_node_inx[j] != -1)); 
+			j+=2) {
 		if (j > 0)
-			sprintf(tmp_line, ",%d", job_ptr->exc_node_inx[j]);
-		else
-			sprintf(tmp_line, "%d", job_ptr->exc_node_inx[j]);
+			xstrcat(out, ",");
+		sprintf(tmp_line, "%d-%d", job_ptr->exc_node_inx[j],
+			job_ptr->exc_node_inx[j+1]);
 		xstrcat(out, tmp_line);
-		if (job_ptr->exc_node_inx[j] == -1)
-			break;
 	}
 	if (one_liner)
 		xstrcat(out, " ");
diff --git a/src/api/partition_info.c b/src/api/partition_info.c
index 8ecbe6954226c9a0187c49716e3525d16e44ada4..21d1a43556b9ff50584c5833d7fccf0bbad38d09 100644
--- a/src/api/partition_info.c
+++ b/src/api/partition_info.c
@@ -205,14 +205,13 @@ char *slurm_sprint_partition_info ( partition_info_t * part_ptr,
 	sprintf(tmp_line, "Nodes=%s NodeIndices=", part_ptr->nodes);
 #endif
 	xstrcat(out, tmp_line);
-	for (j = 0; part_ptr->node_inx; j++) {
+	for (j = 0; (part_ptr->node_inx && (part_ptr->node_inx[j] != -1)); 
+				j+=2) {
 		if (j > 0)
-			sprintf(tmp_line, ",%d", part_ptr->node_inx[j]);
-		else
-			sprintf(tmp_line, "%d", part_ptr->node_inx[j]);
+			xstrcat(out, ",");
+		sprintf(tmp_line, "%d-%d", part_ptr->node_inx[j],
+			part_ptr->node_inx[j+1]);
 		xstrcat(out, tmp_line);
-		if (part_ptr->node_inx[j] == -1)
-			break;
 	}
 	if (one_liner)
 		xstrcat(out, "\n");