You might try an Id other than "final" - that may be reserved for something else in the programming language (I have no idea why it would have an error there, and not the first time, though). Also, when looking at it in the XML, does your script start like this:
Code:
<![CDATA[
~bound our final value
If so, the empty line after the <![CDATA[ is line 1, not the initial comment, meaning line 14 is the line where you're declaring the dievalue macro, which suggests that "dievalue" already has some other meaning in the programming language.