Hay un método más simple que es feo, pero creo que es técnicamente correcto:extraer el segmento más grande posible de la matriz, a diferencia del segmento exacto con límites calculados. Evita las dos llamadas de función.
Ejemplo:
select ('[5:7]={1,2,3}'::int[])[-2147483648:2147483647];
da como resultado:
int4 --------- {1,2,3}