anchor.diff:    (write-char #\)))
   
   (defprinter js-block (statement-p statements)
  -  (loop for (statement . rest) on statements
  -        with indent = (if statement-p "    " "")
  -        with after = (if statement-p
  -                         ";
  -"
  -                         ", ")
  -        unless rest do (setf after (if statement-p after ""))
  -        do (progn (write-string indent)
  -                  (ps-print statement)
  -                  (write-string after))))
  +  (if statement-p
  +      (progn (write-char #\{)
  +             (incf *indent-level*)
  +             (loop for statement in statements
  +                   do (progn (newline-and-indent)
  +                             (ps-print statement)
  +                             (write-char #\;)))
  +             (decf *indent-level*)
  +             (newline-and-indent)
  +             (write-char #\}))
  +      (progn (write-char #\()
  +             (loop for (statement . rest) on statements
  +                   with after = ", "
  +                   unless rest do (setf after "")
  +                   do (progn (ps-print statement)
  +                             (write-string after)))
  +             (write-char #\)))))
   
   (defprinter js-lambda (args body)
     (print-fun-def nil args body))
  
positive.code: ;;; cond
  (defprinter js-cond (clauses)
    (loop for (test body-block) in clauses
          for start = "if (" then "else if ("
          do (progn (if (string= test "true")
                        (progn (write-string "else {")
                               (fresh-line))
                        (progn (ps-print test)
                               (write-string ") {")
                               (fresh-line)))
                    (ps-print body-block)
                    (write-char #\}))))
  
  (defprinter js-statement-if (test then else)
    (write-string "if (")
    (ps-print test)
    (write-string ") {")
    (fresh-line)
    (ps-print then)
    (fresh-line)
    (when else
        (write-string "} else {")
        (fresh-line)
        (ps-print else))
    (write-char #\}))
  
  (defprinter js-expression-if (test then else)
    (ps-print test)
  
negative.code: (defvar *ps-output-stream*)
  
  (defmethod parenscript-print (ps-form &optional *ps-output-stream*)
    (setf *indent-level* 0)
    (flet ((print-ps (form)
             (let ((*standard-output* *ps-output-stream*))
               (if (and (listp form) (eql 'js-block (car form))) ;; ignore top-level block
                   (dolist (statement (third form))
                     (ps-print statement)
                     (format *ps-output-stream* ";~%"))
                   (ps-print form)))))
      (if *ps-output-stream*
          (print-ps ps-form)
          (with-output-to-string (*ps-output-stream*)
  