Is this program conforming? type vector( rk, length ) integer, kind :: rk integer, len :: length real( kind=rk ) :: val( length ) end type vector type( vector( kind(0.0d0), 1000 ) ) :: arr write (*,*) arr % val % kind write (*,*) arr % rk end I think it is. I think the 2 output values must be identical. Compiler 1 outputs 2 identical values. Compiler 2 outputs 2 different values. Anton