anchor.diff:      call check_status(hdferr,'hdf5_read_k_string [5]')
     end subroutine hdf5_read_k_string
   
  +  subroutine hdf5_write_k_logical(handle,path,name,value)
  +    implicit none
  +    integer(hid_t),intent(in) :: handle
  +    character(len=*),intent(in) :: path, name
  +    logical,intent(in) :: value
  +    character(len=3) :: string_value
  +    if (value) then
  +       call hdf5_write_k_string(handle, path, name, 'yes')
  +    else
  +       call hdf5_write_k_string(handle, path, name, 'no')
  +    end if
  +  end subroutine hdf5_write_k_logical
  +
     subroutine hdf5_write_k_string(handle,path,name,value)
       implicit none
       integer(hid_t),intent(in) :: handle
  
positive.code:     integer(hid_t) :: attr_id
      character(len=*),intent(out) :: value
      integer :: hdferr
      INTEGER(HID_T) :: atype_id
      call hdf5_check_exists_keyword(handle, path, name)
      CALL h5tcopy_f(H5T_NATIVE_CHARACTER, atype_id, hdferr)
      call check_status(hdferr,'hdf5_read_k_string [1]')
      CALL h5tset_size_f(atype_id, int(len(value),size_t), hdferr)
      call check_status(hdferr,'hdf5_read_k_string [2]')
      call h5aopen_by_name_f(handle, path, name, attr_id, hdferr)
      call check_status(hdferr,'hdf5_read_k_string [3]')
  
negative.code:     integer(hid_t),intent(in) :: handle
      character(len=*),intent(in) :: path, name
      if(.not.hdf5_exists_keyword(handle, path, name)) then
         print *, "ERROR: attribute "//trim(name)//" does not exist in HDF5 file"
         stop
      end if
    end subroutine hdf5_check_exists_keyword
  
    subroutine hdf5_read_k_logical(handle,path,name,value)
      implicit none
      integer(hid_t),intent(in) :: handle
  