diff --git a/wccl-apps/wccl-run.cpp b/wccl-apps/wccl-run.cpp
index 4346b0d1e77dd1169f6e7e4fd46e6d2b48eb5a2f..3fa18fbe990b88fb1d6858ccb53751ebf23139b1 100644
--- a/wccl-apps/wccl-run.cpp
+++ b/wccl-apps/wccl-run.cpp
@@ -234,6 +234,7 @@ void Runner::do_sentence(const boost::shared_ptr<Corpus2::Sentence>& sentence,
 		sc.set_position(i);
 		UnicodeString vstr;
 		if (filter_op_) {
+			filter_op_->clean();
 			boost::shared_ptr<const Wccl::Value> v = filter_op_->base_apply(sc);
 			vstr = v->to_string_u(tagset_);
 			std::string uvstr = PwrNlp::to_utf8(vstr);
@@ -263,6 +264,7 @@ void Runner::do_sentence(const boost::shared_ptr<Corpus2::Sentence>& sentence,
 		}
 
 		foreach (const boost::shared_ptr<Wccl::FunctionalOperator>& o, ops_) {
+			o->clean();
 			boost::shared_ptr<const Wccl::Value> v = o->base_apply(sc);
 			UnicodeString vstr = v->to_string_u(tagset_);
 			out.push_back(vstr);