diff --git a/libwccl/ops/match/applyoperator.cpp b/libwccl/ops/match/applyoperator.cpp
index 9e9816ad85dfe0c9b1aa937f22a6bacfcc918c45..edcefc02e3f33e55cd9311b53343d644fc24263b 100644
--- a/libwccl/ops/match/applyoperator.cpp
+++ b/libwccl/ops/match/applyoperator.cpp
@@ -38,12 +38,12 @@ void ApplyOperator::execute(const ActionExecContext &context) const
 			context.sentence_context().set_position(orig_pos + 1);
 		} else {
 			// there was a match - check conditions of apply
+			matches->append(match.get_match()); // the match goes to $m:_M[0]
 			bool should_act = true;
 			for(size_t i = 0; should_act && i < apply_conditions_->size(); ++i) {
 				should_act = (*apply_conditions_)[i]->apply(context)->get_value();
 			}
 			if (should_act) {
-				matches->append(match.get_match()); // the match goes to $m:_M[0]
 				foreach (const boost::shared_ptr<MatchAction>& action, *actions_) {
 					action->execute(context);
 				}