Falha de segmentação com argumentos opcionais em funções Fortran

Eu posso usar argumenrs opcionais Fortran com sub-rotinas comintent(in) eintent(inout), mas com funções argumentos opcionais funcionam apenas comintent(in), certo? Comintent(inout) Eu recebo falhas de segmentação no código a seguir:

real function foo(x, tol) 
    real, intent(in) :: x
    real, optional, intent(inout) :: tol
    if( .not. present(tol) ) tol = 1e-6
    !...
end function foo

questionAnswers(1)

yourAnswerToTheQuestion