I would have expected the following program to print 0 and 2, but FTN95 and at least two other compilers return 1 and 3. The program is trying to print the lower bound of an array within a derived type, when the lower bound is explicitly defined as 0. Please advise how my understanding is incorrect.
Module m
Type t
Integer, Dimension(0:2) :: i
End Type t
Type(t), Dimension(3) :: at
End Module m
!
Program p
Use m
Print*, lbound(at(1)%i(:)), ubound(at(1)%i(:))
End Program p