anchor.diff:                         (subseq rate-str
                                  1 (1- (length rate-str)))
                        rate-str))))
  -             (compute-and-write-parts (rate)
  +             (write-functions (i rate)
                  (let ((rate-strs (split-rate-string-equally (rate-str-without-outer-parens rate))))                  
                    (princ #\.)
                    (loop for rate-str in rate-strs
                          for p = (incf npart)
                          collect p into parts
  -                       do (format file "~%~4Tpart~S := ~A;" p rate-str)
  -                       finally (return parts)))))
  +                       do (format file "~%~4Tpart(~S) = ~A;" p rate-str)
  +                       finally (format file "~%~4T$c(~A) = ~:[0~;~{part(~A)~^+~}~];" (1+ i) parts parts))))
  +             (scribble (obj pos)
  +               (let ((end (file-position file)))
  +                 (file-position file pos)
  +                 (prin1 obj file)
  +                 (file-position file end))))
   
       (format t "~&; Writing model block")
       (format file "MODEL ~A~%~
  
positive.code: (defun write-model-block (nm file)
    (let* ((ode-vars  (numerica-model-ode-vars nm))
           (allvars   (query var))
           (klen-pos  nil)
           (npart     0))
      (labels ((rate-str-without-outer-parens (rate)
                 (let ((rate-str (format nil "~S" rate)))
  
negative.code:           for i being the hash-values of kvars-table
            unless (eq kvar :last-index)
            do (setf (svref kvars (1- i)) kvar))
      (format t "~&; Writing parameters")
      (format file "~2TWITHIN m DO")
      (with-print-context t
        (loop for k across kvars 
  