diff --git a/wccl-apps/wccl-run.cpp b/wccl-apps/wccl-run.cpp
index 05317c7b6c976d08bc527b5bdeb4a1a75e087085..4346b0d1e77dd1169f6e7e4fd46e6d2b48eb5a2f 100644
--- a/wccl-apps/wccl-run.cpp
+++ b/wccl-apps/wccl-run.cpp
@@ -310,7 +310,7 @@ void Runner::run(boost::shared_ptr<Corpus2::TokenReader> reader, bool first)
 		if (aggregate_output_) {
 			want_header_ = false;
 		}
-		if (!outputs.empty() && !aggregate_output_) {
+		if (!outputs.empty() && (tabs ||!aggregate_output_)) {
 			output_tabular(outputs);
 			outputs.clear();
 		}
@@ -318,7 +318,7 @@ void Runner::run(boost::shared_ptr<Corpus2::TokenReader> reader, bool first)
 			timer.check_slice();
 		}
 		if (!filter_op_) {
-			if (!aggregate_output_) {
+			if (tabs || !aggregate_output_) {
 				std::cout << "\n";
 			} else {
 				outputs.resize(outputs.size() + 1);
@@ -326,7 +326,7 @@ void Runner::run(boost::shared_ptr<Corpus2::TokenReader> reader, bool first)
 		}
 		if (first) break;
 	}
-	if (!outputs.empty() && aggregate_output_) {
+	if (!outputs.empty()) {
 		output_tabular(outputs);
 	}
 }