diff --git a/types.lisp b/types.lisp
index 6aa722f379f1b97c9ebce8147e29f62687b3d0d4..1942d0ecdf2abf52dfc1cbac4b6581350a07a082 100644
--- a/types.lisp
+++ b/types.lisp
@@ -1,14 +1,14 @@
 (in-package :alexandria)
 
-(deftype array-index (&optional (length array-dimension-limit))
+(deftype array-index (&optional (length (1- array-dimension-limit)))
   "Type designator for an index into array of LENGTH: an integer between
-0 (inclusive) and LENGTH (exclusive). LENGTH defaults to
+0 (inclusive) and LENGTH (exclusive). LENGTH defaults to one less than
 ARRAY-DIMENSION-LIMIT."
   `(integer 0 (,length)))
 
-(deftype array-length (&optional (length array-dimension-limit))
+(deftype array-length (&optional (length (1- array-dimension-limit)))
   "Type designator for a dimension of an array of LENGTH: an integer between
-0 (inclusive) and LENGTH (inclusive). LENGTH defaults to
+0 (inclusive) and LENGTH (inclusive). LENGTH defaults to one less than
 ARRAY-DIMENSION-LIMIT."
   `(integer 0 ,length))