diff --git a/src/squeue/print.c b/src/squeue/print.c
index 503a685f37fbe502bc1bcef89925c7507172db74..cf2f4447c5d0cfcf4a51f341c3511eea4f8d9a6b 100644
--- a/src/squeue/print.c
+++ b/src/squeue/print.c
@@ -877,7 +877,9 @@ static int _filter_job(job_info_t * job)
 		filter = 1;
 		iterator = list_iterator_create(params.state_list);
 		while ((state_id = list_next(iterator))) {
-			if (*state_id == job->job_state) {
+			if ((*state_id == job->job_state) ||
+			    ((*state_id == JOB_COMPLETING) && 
+			     (*state_id & job->job_state))) {
 				filter = 0;
 				break;
 			}
@@ -887,7 +889,8 @@ static int _filter_job(job_info_t * job)
 			return 3;
 	} else {
 		if ((job->job_state != JOB_PENDING) &&
-		    (job->job_state != JOB_RUNNING))
+		    (job->job_state != JOB_RUNNING) &&
+		    ((job->job_state & JOB_COMPLETING) == 0))
 			return 4;
 	}