anchor.diff:  				      length
   				      nbytes
   				      overlapped)))
  -	(if res
  -	    nil
  -	    (pounds::get-last-error))))))
  +	(unless res 
  +	  (pounds::get-last-error))))))
   
   (defun move-block (device new-block old-block)
  +  (declare (type device device)
  +	   (type integer new-block old-block))
     (let ((length (geometry-bytes (device-geometry device))))
       (with-foreign-objects ((buffer :uint8 length)
   			   (nbytes :uint32)
   			   (overlapped '(:struct pounds::overlapped)))
         ;; start by reading the old block
  -      (let ((offset (* old-block (geometry-bytes (device-geometry device)))))
  +      (let ((offset (* old-block length)))
   	(multiple-value-bind (offset-low offset-high) (pounds::split-offset offset)
   	  (setf (foreign-slot-value overlapped '(:struct pounds::overlapped)
   				    'pounds::offset)
  
positive.code: 
  (in-package #:device)
  
  (defstruct device 
    handle geometry)
  
  ;; access 
  ;;#define GENERIC_READ                     (0x80000000L)
  ;;#define GENERIC_WRITE                    (0x40000000L)
  
negative.code: 	   (type integer block)
  	   (type (unsigned-byte 8) value))
    (let ((length (geometry-bytes (device-geometry device)))
  	(offset (* block (device-bytes device))))
      (with-foreign-objects ((buffer :uint8 length)
  			   (nbytes :uint32)
  			   (overlapped '(:struct pounds::overlapped)))
  