anchor.diff:          return i))
   
   (defun insert-at (place-to-put new-points)
  -  (let ((new-tail (cdr place-to-put)))
  -    (if new-tail
  -      (setf (cdr place-to-put) (append new-points new-tail))
  -      (nconc place-to-put new-points))))
  +  (let1 (tail (cdr place-to-put))
  +    (setf (cdr place-to-put) (append new-points tail))))
   
  -(defun cached-ode-solution (the-ode init-t0 init-x0 init-stepsize)
  +(defun cached-ode-solution (the-ode init-t0 init-x0 &optional (init-stepsize *step*))
  +  "Create a closure caching already calculated values of the solution."
     (let ((stepsize (max *eps* init-stepsize))
           (known-graph (list (list init-t0 init-x0))))
       (values
  
positive.code:                (x0 (cadar closest)))
            (if (< t1 t0)
              (error "Can't go back in time."))
            (cond
              ((num-equal t0 t1)
               x0)
              (t
                (let ((graph (runge-kutta-graph the-ode x0 t0 t1 stepsize)))
                  (insert-at closest graph)
                  (cadar (last graph)))))))
        (lambda () known-graph))))
  
negative.code: (in-package :ode)
  
  (defstruct (butcher-tableau
               (:constructor make-butcher
                             (&optional (matrix '((0)))
                                        (weights '(1))
                                        (time-coeffs '(0))
                                        (is-implicit (not (lower-triangular-p matrix))))))
    (matrix :read-only)
    (weights :read-only)
    (time-coeffs :read-only)
  