diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,9 @@
+## 0.3.6.2
+
+-   Force WS state evaluation to resolve duplicate id error inconsistency
+
+    See [#246](https://github.com/lierdakil/pandoc-crossref/issues/246) for context
+
 ##  0.3.6.1
 
 -   Fix `crossrefYaml` setting broken in v0.3.6.0
diff --git a/lib/Text/Pandoc/CrossRef.hs b/lib/Text/Pandoc/CrossRef.hs
--- a/lib/Text/Pandoc/CrossRef.hs
+++ b/lib/Text/Pandoc/CrossRef.hs
@@ -113,7 +113,8 @@
       >>= replaceAll opts
       >>= bottomUpM (replaceRefs opts)
       >>= bottomUpM (listOf opts)
-  return $ evalState doWalk def
+    (result, state) = runState doWalk def
+  state `seq` return result
 
 {- | Modifies metadata for LaTeX output, adding header-includes instructions
 to setup custom and builtin environments.
diff --git a/pandoc-crossref.cabal b/pandoc-crossref.cabal
--- a/pandoc-crossref.cabal
+++ b/pandoc-crossref.cabal
@@ -4,10 +4,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: a49489512927d0bc6f7bdc4b96be5ead2e69fa6e48fdff0318549d2569823a8a
+-- hash: 476e5c1a727c4d24c20d593fc172c93c2e8a164455696b3521d5aa398f193ccb
 
 name:           pandoc-crossref
-version:        0.3.6.1
+version:        0.3.6.2
 synopsis:       Pandoc filter for cross-references
 description:    pandoc-crossref is a pandoc filter for numbering figures, equations, tables and cross-references to them.
 category:       Text
