anchor.diff:  
     ;; Set max-radius to an estimate on the max radius of the curve, given the current values of a, b, and h.
     ;; Multiply by 1.1 to give a bit of empty space around the sides.
  -  (let ((max-radius (* 1.1 (+ a-val b-val h-val))))
  +  (let ((max-radius (* 1.1 (+ a-val b-val h-val)))
  +        (rdt (if (eql dt-type :normal)
  +                 dt
  +                 (/ pi dt))))
       ;; Define some local functions for convenience
       (flet (
              ;; xmapper maps logical x coordinates in the range x-min to x-max to screen coordinates in the range 0 to width
  
positive.code:   (q+:set-decimals dt-spin 3)
    (q+:set-single-step dt-spin 0.001)
    (q+:set-minimum dt-spin 0.001)
    (q+:set-maximum dt-spin (* 2 pi))
    (q+:set-value dt-spin (slot-value sviewer 'dt)))
  
  (define-subwidget (spirograph-controls epitrochoid-button) (q+:make-qradiobutton "Epitrochoid")
  
negative.code:   (q+:set-exclusive button-group t)
    (q+:add-button button-group epitrochoid-button)
    (q+:add-button button-group hypotrochoid-button))
  
  (define-slot (spirograph-controls type-changed) ()
    "Handle radio button changes that hcange the curve type."
  