diff --git a/libwccl/ops/match/conditions/tokencondition.cpp b/libwccl/ops/match/conditions/tokencondition.cpp
index 6dedf2e8281b45cfd0054271eeea62a23121ac25..dac85cc6f7fba25eb049b783e227531496611b41 100644
--- a/libwccl/ops/match/conditions/tokencondition.cpp
+++ b/libwccl/ops/match/conditions/tokencondition.cpp
@@ -40,16 +40,18 @@ std::string TokenCondition::to_string(const Corpus2::Tagset& tagset) const
 MatchResult TokenCondition::apply(const ActionExecContext& context) const
 {
 	int orig_iter = context.sentence_context().get_position();
-	if (_predicate->apply(context)->get_value()) {
-		boost::shared_ptr<TokenMatch> match(new TokenMatch(context.sentence_context().get_position()));
-		// increase current sentence position by one after successful token match
-		context.sentence_context().set_position(orig_iter + 1);
-		return MatchResult(match);
-	}
-	else {
-		context.sentence_context().set_position(orig_iter);
-		return MatchResult();
+	if (context.sentence_context().is_current_inside()) {
+		if (_predicate->apply(context)->get_value()) {
+			boost::shared_ptr<TokenMatch> match(new TokenMatch(context.sentence_context().get_position()));
+			// increase current sentence position by one after successful token match
+			context.sentence_context().set_position(orig_iter + 1);
+			return MatchResult(match);
+		}
 	}
+
+	// else
+	context.sentence_context().set_position(orig_iter);
+	return MatchResult();
 }
 
 std::ostream& TokenCondition::write_to(std::ostream& os) const