diff --git a/Foreign/Marshal/FixedStorableArray.hs b/Foreign/Marshal/FixedStorableArray.hs
--- a/Foreign/Marshal/FixedStorableArray.hs
+++ b/Foreign/Marshal/FixedStorableArray.hs
@@ -1,6 +1,7 @@
 {-# LANGUAGE DataKinds #-}
 {-# LANGUAGE PolyKinds #-}
 {-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE TypeOperators #-}
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE FlexibleContexts #-}
 {-# LANGUAGE ScopedTypeVariables #-}
@@ -301,3 +302,14 @@
                  fromNat (Proxy :: Proxy k) - 1,
                  fromNat (Proxy :: Proxy l) - 1,
                  fromNat (Proxy :: Proxy m) - 1))
+
+instance SingI n => HasBounds ('[n] :: [Nat]) where
+    type Bound ('[n]) = Int
+    bounds _ = (0, fromNat (Proxy :: Proxy n) - 1)
+
+instance (SingI n, HasBounds (n2 ': ns)) =>
+         HasBounds ((n ': n2 ': ns) :: [Nat]) where
+    type Bound (n ': n2 ': ns) = (Int, Bound (n2 ': ns))
+    bounds _ = ((0, b0), (fromNat (Proxy :: Proxy n) - 1, bn))
+      where
+        (b0, bn) = bounds (undefined :: FixedStorableArray (n2 ': ns) ())
diff --git a/fixed-storable-array.cabal b/fixed-storable-array.cabal
--- a/fixed-storable-array.cabal
+++ b/fixed-storable-array.cabal
@@ -1,5 +1,5 @@
 name:                fixed-storable-array
-version:             0.3.0.0
+version:             0.3.1.0
 synopsis:            Fixed-size wrapper for StorableArray, providing a
                      Storable instance
 description:         Uses type-level numeric literals to wrap @StorableArray@
