This rule fails to parse on 6.40 with the following error:
The single field slot 'elapsed' can only contain a single field value.
ERROR:
E (defrule MAIN::simulation-toggle-running
E (declare (salience 200))
E (status (current-time ?now&~nil))
E ?timer <- (simulation (elapsed ?elapsed))
E (test (neq ?elapsed (timer-elapsed ?timer ?now)))
E =>
E (modify ?timer (elapsed (not ?elapsed))))
The offending line is
(modify ?timer (elapsed (not ?elapsed)))
Changing it to
(bind ?toggled (not ?elapsed))
(modify ?timer (elapsed ?toggled))
fixes the issue.
I can't reproduce the error with the code you provided. Can you add the code you used for the status and simulation deftemplates as well as the code you're using for the timer-elapsed function?
No issues with this code either.