diff --git a/alib2algo/src/arbology/exact/ExactPatternMatch.cpp b/alib2algo/src/arbology/exact/ExactPatternMatch.cpp
index 5026d2f6d2cec241aa4b07efafcf0553702c19a9..2d49e429330afaa4d83c553985d24292fd452b09 100644
--- a/alib2algo/src/arbology/exact/ExactPatternMatch.cpp
+++ b/alib2algo/src/arbology/exact/ExactPatternMatch.cpp
@@ -101,7 +101,7 @@ std::set < unsigned > ExactPatternMatch::match ( const tree::PrefixRankedTree &
 		unsigned offset = i;
 
 		for ( ; j < pattern.getContent ( ).size ( ); j++ ) {
-			if ( pattern.getContent ( )[j] == subject.getContent ( )[offset + j] )
+			if ( pattern.getContent ( )[j] == subject.getContent ( )[offset] )
 				offset++;
 			else if ( pattern.getContent ( )[j] == pattern.getSubtreeWildcard ( ) )
 				offset = subjectSubtreeJumpTable[offset];
@@ -128,12 +128,14 @@ std::set < unsigned > ExactPatternMatch::match ( const tree::PrefixRankedBarTree
 		unsigned offset = i;
 
 		for ( ; j < pattern.getContent ( ).size ( ); j++ ) {
-			if ( pattern.getContent ( )[j] == subject.getContent ( )[offset + j] )
+			if ( pattern.getContent ( )[j] == subject.getContent ( )[offset] ) {
 				offset++;
-			else if ( pattern.getContent ( )[j] == pattern.getSubtreeWildcard ( ) )
+			} else if ( pattern.getContent ( )[j] == pattern.getSubtreeWildcard ( ) ) {
+				j++;
 				offset = subjectSubtreeJumpTable[offset];
-			else
+			} else {
 				break;
+			}
 		}
 
 		if ( j == pattern.getContent ( ).size ( ) )