It is safe in Fortran to write call DMDestroy(da, ierr) call DMDestroy(da, ierr) but not da = PETSC_NULL_DM call DMDestroy(da, ierr) That's pretty lame and inconsistent with the analogous C concept. Should we either change the value of PETSC_NULL_DM or change the generated Destroy code?