anchor.diff:  			       (if (and (not (null ,end))
   					(>= ,iter-var ,end))
   				   (loop-finish)
  -				   (setf ,cons-var ,rest-var)
  -				   (progn ,@body)))))))))
  +				   (progn (setf ,cons-var ,rest-var)
  +					  ,@body)))))))))
  
positive.code: 	(rest-var (gensym))
  	(length-var (gensym))
  	(iter-var (gensym)))
      `(let (,cons-var)
         (if ,from-end
  	   (progn (when (null ,end)
  		    (setf ,end (length ,list)))
  
negative.code: 		    (traverse ,list ,length-var)))
  	   (progn (if (null ,start)
  		      (setf ,start 0)
  		      (setf ,list (nthcdr ,start ,list)))
  		  (loop for ,iter-var from start
  			for ,rest-var = ,list then (cdr ,rest-var)
  			do (if (atom ,rest-var)
  			       (if (null ,rest-var)
  				   (if (and (not (null ,end))
  