Ошибка сегментации с необязательными аргументами в функциях Фортрана

Я могу использовать Фортран необязательные аргументы с подпрограммами сintent(in) а такжеintent(inout), но с функциями необязательные аргументы работают только сintent(in), правильно? С участиемintent(inout) Я получаю ошибки сегментации в следующем коде:

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