Operator names are reserved words in the GenExpr language, which all gen patchers get translated into. In most cases a name clash is hidden from you, but in the case of your patcher a conflict has arisen because of the presence of a [rate] operator in the same space as [param rate]. This is a bug. It's theoretically possible to work around this, but it would add to the overhead of parsing/code generation; keeping that low has been a priority for the cases where gen patchers get large & complex (which is also where they show the greatest efficiency gains).
This is worth revisiting, given how easy it is to want to use the same name for a parameter as an operator! Logged as ticket #8794 and looking into it.