Within the saxon:iterate extension instruction, if a saxon:continue contains no xsl:with-param element for one of the declared parameters (say there is a declaration <xsl:param name="Z"> but no <xsl:with-param name="Z">), then Saxon implicitly adds an element <xsl:with-param name="Z" select="$Z"/>. This is incorrect if the parameter Z has been shadowed by a local variable declaration with the same name.
This problem will not be fixed on the 9.2 branch; it will be fixed in the next major release. As a workaround, avoid using local variables that have the same names as the declared parameters.
(Test case iterate009)