anchor.diff:  	     `((declare (ignore ,pkt)) ,@body)))))
   
   ;;; floating-point type helper
  -(defmacro make-float-serializer (key int-key type int-type encoder decoder)
  +(defmacro make-float-serializer (key type bytes encoder decoder)
     `(progn
        (defmethod serialize (packet (type (eql ,key)) value)
          (declare (type packet packet)
   		(ignore type)
   		(type ,type value))
  -       (serialize packet ,int-key (,encoder value)))
  +       (add-bytes-helper packet (,encoder value) ,bytes))
        (defmethod unserialize (packet (type (eql ,key)))
          (declare (type packet packet)
   		(ignore type))
          (multiple-value-bind (vv packet)
  -	   (unserialize packet ,int-key)
  -	 (declare (type ,int-type vv)
  +	   (get-bytes-helper packet vv ,bytes)
  +	 (declare (type (unsigned-byte ,(* bytes 8)) vv)
   		  (type packet packet))
   	 (values (,decoder vv) packet)))))
   
   ;;; floating-point type serializers/deserializers
  -(make-float-serializer :float32     :uint32
  -		       single-float (unsigned-byte 32)
  +(make-float-serializer :float32 single-float 4
   		       ieee-floats:encode-float32
   		       ieee-floats:decode-float32)
  -(make-float-serializer :float64     :uint64
  -		       double-float (unsigned-byte 64)
  +(make-float-serializer :float64 double-float 8
   		       ieee-floats:encode-float64
   		       ieee-floats:decode-float64)
   
  
positive.code: (make-uint-serializer :uint64 8)
  
  ;;; signed-int serialization helper
  (defmacro make-int-serializer (key ukey bytes)
    `(progn
       (defmethod serialize (packet (type (eql ,key)) value)
         (declare (type packet packet)
  
negative.code:     (incf (fill-pointer packet) length)
      (setf (subseq packet start (+ start length)) value)
      packet))
  
  (defmethod unserialize (packet (type (eql :bytes)))
    (declare (type packet packet)
  