Intel Fortran 7.0 for Linux で Fortran90
を勉強し始めたんですが、いきなりはまってしまいました。
以下のプログラムの出力が 0 1 1 になるのですが、何故でしょうか?
0 1 0 となると思って書きました。

program optional_arg
write(*,*) func(), func(1), func()
contains
integer function func(arg)
integer,intent(in),optional :: arg
integer :: ret=0
if(present(arg)) then
ret=arg
end if
func=ret
end function func
end program optional_arg