diff --git a/tests/rules-data/match/postcond2/cclmatch-none.ccl b/tests/rules-data/match/postcond2/cclmatch-none.ccl
new file mode 100644
index 0000000000000000000000000000000000000000..594b8220a2e47015de18115cfe49527c1ab1024d
--- /dev/null
+++ b/tests/rules-data/match/postcond2/cclmatch-none.ccl
@@ -0,0 +1,11 @@
+apply(
+  match(
+    is("A")
+  ),
+  cond(
+    annsub(M, "B")
+  ),
+  actions(
+    mark(M, "C")
+  )
+)
diff --git a/tests/rules-data/match/postcond2/cclmatch-none.out.xml b/tests/rules-data/match/postcond2/cclmatch-none.out.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7b48741fe5a6070eb919fa18884500f8d394eb62
--- /dev/null
+++ b/tests/rules-data/match/postcond2/cclmatch-none.out.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE cesAna SYSTEM "xcesAnaIPI.dtd">
+<cesAna xmlns:xlink="http://www.w3.org/1999/xlink" version="1.0" type="lex disamb">
+<chunkList>
+ <chunk>
+  <sentence>
+   <tok>
+    <orth>Dwa</orth>
+    <lex><base>dwa</base><ctag>other</ctag></lex>
+    <ann chan="A">1</ann>
+    <ann chan="B" head="1">1</ann>
+   </tok>
+   <tok>
+    <orth>wielkie</orth>
+    <lex><base>wielki</base><ctag>adj</ctag></lex>
+    <ann chan="A">1</ann>
+    <ann chan="B" head="1">2</ann>
+   </tok>
+   <tok>
+    <orth>włochate</orth>
+    <lex><base>włochaty</base><ctag>adj</ctag></lex>
+    <ann chan="A">1</ann>
+    <ann chan="B">2</ann>
+   </tok>
+   <tok>
+    <orth>zapchlone</orth>
+    <lex><base>zapchlić</base><ctag>adj</ctag></lex>
+    <ann chan="A">1</ann>
+    <ann chan="B">2</ann>
+   </tok>
+   <tok>
+    <orth>koty</orth>
+    <lex><base>kot</base><ctag>noun</ctag></lex>
+    <ann chan="A" head="1">1</ann>
+    <ann chan="B" head="1">3</ann>
+   </tok>
+   <tok>
+    <orth>zjadły</orth>
+    <lex><base>zjeść</base><ctag>verb</ctag></lex>
+    <ann chan="A">0</ann>
+    <ann chan="B" head="1">4</ann>
+   </tok>
+   <tok>
+    <orth>pięć</orth>
+    <lex><base>pięć</base><ctag>other</ctag></lex>
+    <ann chan="A" head="1">2</ann>
+    <ann chan="B">4</ann>
+   </tok>
+   <tok>
+    <orth>tłustych</orth>
+    <lex><base>tłusty</base><ctag>adj</ctag></lex>
+    <ann chan="A">2</ann>
+    <ann chan="B">4</ann>
+   </tok>
+   <tok>
+    <orth>soczystych</orth>
+    <lex><base>soczysty</base><ctag>adj</ctag></lex>
+    <ann chan="A">2</ann>
+    <ann chan="B">4</ann>
+   </tok>
+   <tok>
+    <orth>much</orth>
+    <lex><base>mucha</base><ctag>noun</ctag></lex>
+    <ann chan="A">2</ann>
+    <ann chan="B">0</ann>
+   </tok>
+  </sentence>
+ </chunk>
+</chunkList>
+</cesAna>
diff --git a/tests/rules-data/match/postcond2/cclmatch.xml b/tests/rules-data/match/postcond2/cclmatch.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7b48741fe5a6070eb919fa18884500f8d394eb62
--- /dev/null
+++ b/tests/rules-data/match/postcond2/cclmatch.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE cesAna SYSTEM "xcesAnaIPI.dtd">
+<cesAna xmlns:xlink="http://www.w3.org/1999/xlink" version="1.0" type="lex disamb">
+<chunkList>
+ <chunk>
+  <sentence>
+   <tok>
+    <orth>Dwa</orth>
+    <lex><base>dwa</base><ctag>other</ctag></lex>
+    <ann chan="A">1</ann>
+    <ann chan="B" head="1">1</ann>
+   </tok>
+   <tok>
+    <orth>wielkie</orth>
+    <lex><base>wielki</base><ctag>adj</ctag></lex>
+    <ann chan="A">1</ann>
+    <ann chan="B" head="1">2</ann>
+   </tok>
+   <tok>
+    <orth>włochate</orth>
+    <lex><base>włochaty</base><ctag>adj</ctag></lex>
+    <ann chan="A">1</ann>
+    <ann chan="B">2</ann>
+   </tok>
+   <tok>
+    <orth>zapchlone</orth>
+    <lex><base>zapchlić</base><ctag>adj</ctag></lex>
+    <ann chan="A">1</ann>
+    <ann chan="B">2</ann>
+   </tok>
+   <tok>
+    <orth>koty</orth>
+    <lex><base>kot</base><ctag>noun</ctag></lex>
+    <ann chan="A" head="1">1</ann>
+    <ann chan="B" head="1">3</ann>
+   </tok>
+   <tok>
+    <orth>zjadły</orth>
+    <lex><base>zjeść</base><ctag>verb</ctag></lex>
+    <ann chan="A">0</ann>
+    <ann chan="B" head="1">4</ann>
+   </tok>
+   <tok>
+    <orth>pięć</orth>
+    <lex><base>pięć</base><ctag>other</ctag></lex>
+    <ann chan="A" head="1">2</ann>
+    <ann chan="B">4</ann>
+   </tok>
+   <tok>
+    <orth>tłustych</orth>
+    <lex><base>tłusty</base><ctag>adj</ctag></lex>
+    <ann chan="A">2</ann>
+    <ann chan="B">4</ann>
+   </tok>
+   <tok>
+    <orth>soczystych</orth>
+    <lex><base>soczysty</base><ctag>adj</ctag></lex>
+    <ann chan="A">2</ann>
+    <ann chan="B">4</ann>
+   </tok>
+   <tok>
+    <orth>much</orth>
+    <lex><base>mucha</base><ctag>noun</ctag></lex>
+    <ann chan="A">2</ann>
+    <ann chan="B">0</ann>
+   </tok>
+  </sentence>
+ </chunk>
+</chunkList>
+</cesAna>
diff --git a/tests/rules-data/match/postcond2/cclmatch2.ccl b/tests/rules-data/match/postcond2/cclmatch2.ccl
new file mode 100644
index 0000000000000000000000000000000000000000..75f7fb464df2ee63d1c6be79a18a70c328384343
--- /dev/null
+++ b/tests/rules-data/match/postcond2/cclmatch2.ccl
@@ -0,0 +1,11 @@
+apply(
+  match(
+    is("B")
+  ),
+  cond(
+    annsub(M, "A")
+  ),
+  actions(
+    mark(M, "C")
+  )
+)
diff --git a/tests/rules-data/match/postcond2/cclmatch2.out.ccl b/tests/rules-data/match/postcond2/cclmatch2.out.ccl
new file mode 100644
index 0000000000000000000000000000000000000000..999ba97a0576fedffb3716ab06f5f2fcd4205b71
--- /dev/null
+++ b/tests/rules-data/match/postcond2/cclmatch2.out.ccl
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE cesAna SYSTEM "xcesAnaIPI.dtd">
+<cesAna xmlns:xlink="http://www.w3.org/1999/xlink" version="1.0" type="lex disamb">
+<chunkList>
+ <chunk>
+  <sentence>
+   <tok>
+    <orth>Dwa</orth>
+    <lex><base>dwa</base><ctag>other</ctag></lex>
+    <ann chan="A">1</ann>
+    <ann chan="B" head="1">1</ann>
+    <ann chan="C" head="1">1</ann>
+   </tok>
+   <tok>
+    <orth>wielkie</orth>
+    <lex><base>wielki</base><ctag>adj</ctag></lex>
+    <ann chan="A">1</ann>
+    <ann chan="B" head="1">2</ann>
+    <ann chan="C" head="1">2</ann>
+   </tok>
+   <tok>
+    <orth>włochate</orth>
+    <lex><base>włochaty</base><ctag>adj</ctag></lex>
+    <ann chan="A">1</ann>
+    <ann chan="B">2</ann>
+    <ann chan="C">2</ann>
+   </tok>
+   <tok>
+    <orth>zapchlone</orth>
+    <lex><base>zapchlić</base><ctag>adj</ctag></lex>
+    <ann chan="A">1</ann>
+    <ann chan="B">2</ann>
+    <ann chan="C">2</ann>
+   </tok>
+   <tok>
+    <orth>koty</orth>
+    <lex><base>kot</base><ctag>noun</ctag></lex>
+    <ann chan="A" head="1">1</ann>
+    <ann chan="B" head="1">3</ann>
+    <ann chan="C" head="1">3</ann>
+   </tok>
+   <tok>
+    <orth>zjadły</orth>
+    <lex><base>zjeść</base><ctag>verb</ctag></lex>
+    <ann chan="A">0</ann>
+    <ann chan="B" head="1">4</ann>
+    <ann chan="C">0</ann>
+   </tok>
+   <tok>
+    <orth>pięć</orth>
+    <lex><base>pięć</base><ctag>other</ctag></lex>
+    <ann chan="A" head="1">2</ann>
+    <ann chan="B">4</ann>
+    <ann chan="C">0</ann>
+   </tok>
+   <tok>
+    <orth>tłustych</orth>
+    <lex><base>tłusty</base><ctag>adj</ctag></lex>
+    <ann chan="A">2</ann>
+    <ann chan="B">4</ann>
+    <ann chan="C">0</ann>
+   </tok>
+   <tok>
+    <orth>soczystych</orth>
+    <lex><base>soczysty</base><ctag>adj</ctag></lex>
+    <ann chan="A">2</ann>
+    <ann chan="B">4</ann>
+    <ann chan="C">0</ann>
+   </tok>
+   <tok>
+    <orth>much</orth>
+    <lex><base>mucha</base><ctag>noun</ctag></lex>
+    <ann chan="A">2</ann>
+    <ann chan="B">0</ann>
+    <ann chan="C">0</ann>
+   </tok>
+  </sentence>
+ </chunk>
+</chunkList>
+</cesAna>
diff --git a/tests/rules-data/match/postcond2/cclmatch3.ccl b/tests/rules-data/match/postcond2/cclmatch3.ccl
new file mode 100644
index 0000000000000000000000000000000000000000..d9c9f33d9d44fdba0310c03668c9be576b2e2756
--- /dev/null
+++ b/tests/rules-data/match/postcond2/cclmatch3.ccl
@@ -0,0 +1,5 @@
+apply(
+  match(repeat(equal(class[0], adj))),
+  cond(ann(M, "B")),
+  actions(mark(M,"C"))
+)
diff --git a/tests/rules-data/match/postcond2/cclmatch3.out.xml b/tests/rules-data/match/postcond2/cclmatch3.out.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c45a8fc1dff12873863dbcd5c9b34c3404950b5d
--- /dev/null
+++ b/tests/rules-data/match/postcond2/cclmatch3.out.xml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE cesAna SYSTEM "xcesAnaIPI.dtd">
+<cesAna xmlns:xlink="http://www.w3.org/1999/xlink" version="1.0" type="lex disamb">
+<chunkList>
+ <chunk>
+  <sentence>
+   <tok>
+    <orth>Dwa</orth>
+    <lex><base>dwa</base><ctag>other</ctag></lex>
+    <ann chan="A">1</ann>
+    <ann chan="B" head="1">1</ann>
+    <ann chan="C">0</ann>
+   </tok>
+   <tok>
+    <orth>wielkie</orth>
+    <lex><base>wielki</base><ctag>adj</ctag></lex>
+    <ann chan="A">1</ann>
+    <ann chan="B" head="1">2</ann>
+    <ann chan="C" head="1">1</ann>
+   </tok>
+   <tok>
+    <orth>włochate</orth>
+    <lex><base>włochaty</base><ctag>adj</ctag></lex>
+    <ann chan="A">1</ann>
+    <ann chan="B">2</ann>
+    <ann chan="C">1</ann>
+   </tok>
+   <tok>
+    <orth>zapchlone</orth>
+    <lex><base>zapchlić</base><ctag>adj</ctag></lex>
+    <ann chan="A">1</ann>
+    <ann chan="B">2</ann>
+    <ann chan="C">1</ann>
+   </tok>
+   <tok>
+    <orth>koty</orth>
+    <lex><base>kot</base><ctag>noun</ctag></lex>
+    <ann chan="A" head="1">1</ann>
+    <ann chan="B" head="1">3</ann>
+    <ann chan="C">0</ann>
+   </tok>
+   <tok>
+    <orth>zjadły</orth>
+    <lex><base>zjeść</base><ctag>verb</ctag></lex>
+    <ann chan="A">0</ann>
+    <ann chan="B" head="1">4</ann>
+    <ann chan="C">0</ann>
+   </tok>
+   <tok>
+    <orth>pięć</orth>
+    <lex><base>pięć</base><ctag>other</ctag></lex>
+    <ann chan="A" head="1">2</ann>
+    <ann chan="B">4</ann>
+    <ann chan="C">0</ann>
+   </tok>
+   <tok>
+    <orth>tłustych</orth>
+    <lex><base>tłusty</base><ctag>adj</ctag></lex>
+    <ann chan="A">2</ann>
+    <ann chan="B">4</ann>
+    <ann chan="C">0</ann>
+   </tok>
+   <tok>
+    <orth>soczystych</orth>
+    <lex><base>soczysty</base><ctag>adj</ctag></lex>
+    <ann chan="A">2</ann>
+    <ann chan="B">4</ann>
+    <ann chan="C">0</ann>
+   </tok>
+   <tok>
+    <orth>much</orth>
+    <lex><base>mucha</base><ctag>noun</ctag></lex>
+    <ann chan="A">2</ann>
+    <ann chan="B">0</ann>
+    <ann chan="C">0</ann>
+   </tok>
+  </sentence>
+ </chunk>
+</chunkList>
+</cesAna>
diff --git a/tests/rules-data/match/postcond2/cclmatch4.ccl b/tests/rules-data/match/postcond2/cclmatch4.ccl
new file mode 100644
index 0000000000000000000000000000000000000000..6e68f17b1d2c177c43cc34d4298a8dbea44465c0
--- /dev/null
+++ b/tests/rules-data/match/postcond2/cclmatch4.ccl
@@ -0,0 +1,5 @@
+apply(
+  match(repeat(equal(class[0], adj))),
+  cond(annsub(M, "B")),
+  actions(mark(M,"C"))
+)
diff --git a/tests/rules-data/match/postcond2/cclmatch4.out.xml b/tests/rules-data/match/postcond2/cclmatch4.out.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0dfe62a1d104e68b9a07bba9e79e40073d723b0e
--- /dev/null
+++ b/tests/rules-data/match/postcond2/cclmatch4.out.xml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE cesAna SYSTEM "xcesAnaIPI.dtd">
+<cesAna xmlns:xlink="http://www.w3.org/1999/xlink" version="1.0" type="lex disamb">
+<chunkList>
+ <chunk>
+  <sentence>
+   <tok>
+    <orth>Dwa</orth>
+    <lex><base>dwa</base><ctag>other</ctag></lex>
+    <ann chan="A">1</ann>
+    <ann chan="B" head="1">1</ann>
+    <ann chan="C">0</ann>
+   </tok>
+   <tok>
+    <orth>wielkie</orth>
+    <lex><base>wielki</base><ctag>adj</ctag></lex>
+    <ann chan="A">1</ann>
+    <ann chan="B" head="1">2</ann>
+    <ann chan="C" head="1">1</ann>
+   </tok>
+   <tok>
+    <orth>włochate</orth>
+    <lex><base>włochaty</base><ctag>adj</ctag></lex>
+    <ann chan="A">1</ann>
+    <ann chan="B">2</ann>
+    <ann chan="C">1</ann>
+   </tok>
+   <tok>
+    <orth>zapchlone</orth>
+    <lex><base>zapchlić</base><ctag>adj</ctag></lex>
+    <ann chan="A">1</ann>
+    <ann chan="B">2</ann>
+    <ann chan="C">1</ann>
+   </tok>
+   <tok>
+    <orth>koty</orth>
+    <lex><base>kot</base><ctag>noun</ctag></lex>
+    <ann chan="A" head="1">1</ann>
+    <ann chan="B" head="1">3</ann>
+    <ann chan="C">0</ann>
+   </tok>
+   <tok>
+    <orth>zjadły</orth>
+    <lex><base>zjeść</base><ctag>verb</ctag></lex>
+    <ann chan="A">0</ann>
+    <ann chan="B" head="1">4</ann>
+    <ann chan="C">0</ann>
+   </tok>
+   <tok>
+    <orth>pięć</orth>
+    <lex><base>pięć</base><ctag>other</ctag></lex>
+    <ann chan="A" head="1">2</ann>
+    <ann chan="B">4</ann>
+    <ann chan="C">0</ann>
+   </tok>
+   <tok>
+    <orth>tłustych</orth>
+    <lex><base>tłusty</base><ctag>adj</ctag></lex>
+    <ann chan="A">2</ann>
+    <ann chan="B">4</ann>
+    <ann chan="C" head="1">2</ann>
+   </tok>
+   <tok>
+    <orth>soczystych</orth>
+    <lex><base>soczysty</base><ctag>adj</ctag></lex>
+    <ann chan="A">2</ann>
+    <ann chan="B">4</ann>
+    <ann chan="C">2</ann>
+   </tok>
+   <tok>
+    <orth>much</orth>
+    <lex><base>mucha</base><ctag>noun</ctag></lex>
+    <ann chan="A">2</ann>
+    <ann chan="B">0</ann>
+    <ann chan="C">0</ann>
+   </tok>
+  </sentence>
+ </chunk>
+</chunkList>
+</cesAna>
diff --git a/tests/rules-data/match/postcond2/simple.is-the-tagset b/tests/rules-data/match/postcond2/simple.is-the-tagset
new file mode 100644
index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc
--- /dev/null
+++ b/tests/rules-data/match/postcond2/simple.is-the-tagset
@@ -0,0 +1 @@
+