anchor.diff:        ;;    The array may have padding at the end; the base offset of the member
         ;;    following the array is rounded up to the next multiple of the base
         ;;    alignment.
  -      (round-to-next-multiple (base-alignment (element-type type))
  -                              (base-alignment :vec4))))
  +      (base-alignment parent previous-sibling self)
  +      ;;
  +      (machine-unit-size self)))
   
  -
  -;;- - - - - - -
  +;;
   ;; Ignored
   
   ;; 7. If the member is a row-major matrix with C columns and R rows,
  
positive.code:     ;; The structure may have padding at the end; the base offset of
      ;; the member following the sub-structure is rounded up to the
      ;; next multiple of the base alignment of the structure.
      ((struct-type-p type)
       (round-to-next-multiple
        (reduce max (mapcar #'base-alignment (children type)))
        (base-alignment :vec4)))
      ;; 4. If the member is an array of scalars or vectors, the base
      ;;    alignment and array stride are set to match the base alignment of
  
negative.code: 
  (defun round-to-next-multiple (val multiple)
    (* (ceiling val multiple) multiple))
  
  ;;----------------------------------------------------------------------
  
  (defclass layout-node ()
    ((type :initarg :type)
     (base-offset :initarg :base-offset)
     (aligned-offset :initarg :aligned-offset)
     (stride :initarg :stride)
     (children :initarg :children)))
  
  ;;----------------------------------------------------------------------
  