anchor.diff:  (defun integer-to-ascii (integer)
     (cdr (assoc integer *ascii*)))
   
  -(defun position-last-open-bracket (string start-position)
  +#|(defun position-last-open-bracket (string start-position)
     "Find the matching bracket for this loop. It NEEDS TO LEARN ABOUT NESTING"
  -  (position #\[ (subseq string 0 start-position) :from-end t))
  -
  +  (position #\[ (subseq string 0 start-position) :from-end t))|#
  +(defun position-last-open-bracket-aux (current-position
  +				       depth)
  +  (let ((this (elt *brainfuck* current-position)))
  +    (if (char= #\[ this)
  +	(if (= 1 depth)
  +	    current-position
  +	    (if (> depth 1)
  +		(position-last-open-bracket-aux (1- current-position)
  +						(1- depth))
  +		(position-last-open-bracket-aux (1- current-position)
  +						0)))
  +	(if (char= #\] this)
  +	    (position-last-open-bracket-aux (1- current-position)
  +					    (1+ depth))
  +	    (position-last-open-bracket-aux (1- current-position)
  +					    depth)))))
  +(defun position-last-open-bracket (position)
  +  "Work backwards and find the matching open bracket."
  +  (position-last-open-bracket-aux position 0))
   (defun right-shift ()
     "Move to the next byte to the \"right\""
     (setf *pointer* (1+ *pointer*)))
  
positive.code: 	  ((string-equal string-length-one this) (car (car ascii)))
  	  (t (ascii-to-integer-aux string-length-one (cdr ascii))))))
  
  (defun one-off-fuck (brainfuck-char position)
    "Run a single first brainfuck-char."
    (let ((symbolified (convert-fuck-char brainfuck-char)))
      (cond ((equalp symbolified
  		   (convert-fuck-char #\,)) (setf (elt *tape* *pointer*)
  						  (ascii-to-integer (read-char))))
  	  ((equalp symbolified
  		   (convert-fuck-char #\.)) (format t "~a" (integer-to-ascii (byte-value))))
  	  ((equalp symbolified
  		   '+) (incf-byte))
  	  ((equalp symbolified
  		   '-) (decf-byte))
  	  ((equalp symbolified
  		   ']) (if (/= 0 (byte-value))
  			   (let ((new-pos (1+ (position-last-open-bracket *brainfuck* position))))
  			     (interpret-fuck-aux (subseq *brainfuck* new-pos) new-pos))
  			   ()))
  	  ((equalp symbolified
  		   '>) (right-shift))
  	  ((equalp symbolified
  		   '<) (left-shift)))))
  
  (defun interpret-fuck-aux (brainfuck-string position)
    "Recursive auxillary function for interpret"
    (let ((string-length (length brainfuck-string)))
      (if (> string-length 1)
  	(progn
  	  (one-off-fuck (first-elt brainfuck-string) (1+ position))
  	  (interpret-fuck-aux (remove-first brainfuck-string)
  				   (1+ position)))
  	(if (= string-length 1)
  	    (one-off-fuck (first-elt brainfuck-string) (1+ position))
  	    (if (= string-length 0)
  		nil)))))
  
  (defun interpret (brainfuck-string)
    "Interpret the brainfuck"
    (setf *tape* (make-tape-array))	  ;Don't use this dynamic variable either
    (setf *brainfuck* brainfuck-string)
    (setf *pointer* (pointer-default))
    (interpret-fuck-aux brainfuck-string 0)
    nil)
  
negative.code: (defvar *brainfuck* ""
    "Place to store brainfuck code input string globally")
  
  (define-condition open-loop-at-zero () ())
  (defparameter *operators*
    '((#\+ . +)
      (#\- . -)
  