Index: /trunk/ccl/lib/foreign-types.lisp
===================================================================
--- /trunk/ccl/lib/foreign-types.lisp	(revision 5959)
+++ /trunk/ccl/lib/foreign-types.lisp	(revision 5960)
@@ -156,5 +156,5 @@
           ((> bits 16) 32)
           ((> bits 8) 16)
-          ((> bits 1) 8)
+          ((= bits 8) 8)
           (t 1)))
 
@@ -1039,9 +1039,10 @@
 	    (error "Unknown alignment: ~S"
 		   (unparse-foreign-type field-type)))
-	  (setf overall-alignment (max overall-alignment alignment))
+	  (setf overall-alignment (max overall-alignment (if (< alignment 8) 32 alignment)))
 	  (ecase (foreign-record-type-kind result)
 	    (:struct
 	     (let ((offset (align-offset total-bits alignment)))
 	       (setf (foreign-record-field-offset parsed-field) offset)
+               (setf (foreign-record-field-bits parsed-field) bits)
 	       (setf total-bits (+ offset bits))))
 	    (:union
@@ -1585,5 +1586,4 @@
   (let* ((*target-ftd* ftd)
          (natural-word-size (getf (ftd-attributes ftd) :bits-per-word)))
-    
     (def-foreign-type-translator signed (&optional (bits 32))
       (if (<= bits 32)
