anchor.diff:  
       ! Sub-fault locations and slip
       do i = n+1,n+nx*ny
  -        read (34,*) lat,lon,dep,slip,rake,strike,dip,trup
  +        read (34,'(A)',iostat=ios) input_line
  +        read (input_line,*,iostat=ios) lat,lon,dep,slip,rake,strike,dip,trup
  +        if (ios.ne.0) then
  +            write(stderr,*) 'read_usgs_param: error parsing line: '
  +            write(stderr,*) trim(input_line)
  +            write(stderr,*) 'as: lat lon dep slip rake strike dip trup'
  +            ierr = 1
  +            return
  +        endif
           usgs_param_data%subflt(i,1) = lon
           usgs_param_data%subflt(i,2) = lat
           usgs_param_data%subflt(i,3) = dep*1.0d3
  
positive.code: ! Count the total number of sub-faults
  usgs_param_data%nflt = 0
  do iseg = 1,usgs_param_data%nseg
      read(34,*) dum,dum,dum,dum,nx,dum,dum,dum,ny
      usgs_param_data%nflt = usgs_param_data%nflt + nx*ny
      do j = 1,8+nx*ny
          read(34,*)
      enddo
  enddo
  rewind(34)
  
negative.code: integer :: i, j, n, nx, ny, ios, iseg
  character(len=1) :: dum
  character(len=16) :: dx_char, dy_char
  character(len=512) :: input_line
  double precision :: lon, lat, dep, strike, dip, rake, slip, dx, dy, trup
  
  ! As we begin our journey, everything seems okay...
  