anchor.diff:                  ;; More than one thread, even.
                   (dotimes (y height)
                     (dotimes (x width)
  -                    (setf (mezzano.gui:surface-pixel framebuffer (+ left x) (+ top y)) (render-mandelbrot x y width height hue-offset)))
  +                    (setf (mezzano.gui:surface-pixel framebuffer (+ left x) (+ top y))
  +                          (render-mandelbrot (float x) (float y) (float width) (float height) (float hue-offset))))
                     (mezzano.gui.compositor:damage-window window left (+ top y) width 1)
                     (loop
                        (let ((evt (mezzano.supervisor:fifo-pop fifo nil)))
  
positive.code: (in-package :mandelbrot)
  
  (defun hue-to-rgb (h)
    (let* ((h* (/ (rem h 360.0) 60.0))
           (x (- 1 (abs (- (mod h* 2) 1)))))
      (cond
        ((< h* 1) (values 1 x 0))
        ((< h* 2) (values x 1 0))
        ((< h* 3) (values 0 1 x))
        ((< h* 4) (values 0 x 1))
        ((< h* 5) (values x 0 1))
        ((< h* 6) (values 1 0 x)))))
  
  (defun m (cr ci iterations)
    (let ((zr 0) (zi 0))
      (dotimes (i iterations nil)
        (let ((zr2 (* zr zr))
              (zi2 (* zi zi)))
        (psetf zr (+ cr (- zr2 zi2))
               zi (+ ci (* zi zr) (* zr zi)))
        (when (> (+ zr2 zi2) 4)
          (return (* (/ i iterations) 360)))))))
  
  (defun render-mandelbrot (x y width height hue-offset)
    "Render one pixel."
    (let* ((scale (/ 4 width))
           (x^ (- x (/ width 2)))
           (y^ (- y (/ height 2)))
           (r 0) (g 0) (b 0))
      (flet ((frag (x y)
               (let ((hue (m (- (* scale x) 0.5)
                             (* scale y)
                             25)))
                 (when hue
                   (multiple-value-bind (r* g* b*)
                       (hue-to-rgb (+ hue-offset hue))
                     (incf r r*)
                     (incf g g*)
                     (incf b b*))))))
        (frag    x^         y^)
        (frag (+ x^ 0.5)    y^)
        (frag    x^      (+ y^ 0.5))
        (frag (+ x^ 0.5) (+ y^ 0.5))
        (mezzano.gui:make-colour (/ r 4) (/ g 4) (/ b 4)))))
  
  (defgeneric dispatch-event (frame event)
    (:method (f e)))
  
negative.code:         (hue-offset (rem (get-universal-time) 360)))
      (dotimes (y height)
        (dotimes (x width)
          (setf (mezzano.gui:surface-pixel framebuffer x y)
                (render-mandelbrot (float x) (float y) (float width) (float height) (float hue-offset)))))
      framebuffer))
  
  (defun mandelbrot-main (width height)
  