 point is at the end of a blank line, reduces the indentation to match
 that of the line that opened the current block of code.  The line that
 opened the block is displayed in the echo area to help you keep track
-of where you are.
+of where you are.  With numeric count, outdents that many blocks (but
+not past column zero).
 
 Else the preceding character is deleted, converting a tab to spaces if
-needed so that only a single column position is deleted."
-  (interactive "*")
+needed so that only a single column position is deleted.  Numeric
+argument delets that many characters."
+  (interactive "*p")
   (if (or (/= (current-indentation) (current-column))
 	  (bolp)
 	  (py-continuation-line-p)
 	  (looking-at "#[^ \t\n]"))	; non-indenting #
-      (backward-delete-char-untabify 1)
+      (backward-delete-char-untabify count)
     ;; else indent the same as the colon line that opened the block
 
     ;; force non-blank so py-goto-block-up doesn't ignore it

;; - proper interaction with pending-del and del-sel modes.
;; - New py-electric-colon (:) command for improved outdenting.  Also
;;   py-indent-line (TAB) should handle outdented lines better.
;; - New commands py-outdent-left (C-c C-l) and py-indent-right (C-c C-r)

;; Here's a brief to do list:
;;

    (let ((base-indent 0)		; indentation of base line
	  (base-text "")		; and text of base line
	  (base-found-p nil))
      (save-excursion
	(while (< 0 count)
	  (condition-case nil		; in case no enclosing block
	      (progn
		(py-goto-block-up 'no-mark)
		(setq base-indent (current-indentation)
		      base-text   (py-suck-up-leading-text)
		      base-found-p t))
	    (error nil))
	  (setq count (1- count))))
      (delete-char 1)			; toss the dummy character
      (delete-horizontal-space)
      (indent-to base-indent)
