This would be for 1.6, scm_to_short has fixed it in the head. Though num2short in the head would get the function name into the error, like the other ivect, uvect etc types get. * unif.c (scm_array_set_x): For svect, use scm_num2short to get range check, previously silently truncated inum to short. Eg. on i386 where short is 16 bits, (define a (make-uniform-array 's 2)) (array-set! a 65536 1) (array-ref a 1) => 0 where I think array-set! should throw an error since 65536 is too big. array-fill! does that.