anchor.diff:          case('RectilinearGrid','StructuredGrid')
             call get_char(buffer=s_buffer, attrib='Extent', val=aux, E_IO=E_IO)
             if(E_IO == 0) then      
  -            read(aux,*, iostat=E_IO) nx1,nx2,ny1,ny2,nz1,nz2
  -            NC_NN = (nx2-nx1+1)*(ny2-ny1+1)*(nz2-nz1+1)
  +            read(aux,*, iostat=E_IO) x1,x2,y1,y2,z1,z2   
  +            NC_NN = (x2-x1+1)*(y2-y1+1)*(z2-z1+1)
  +            if(present(nx1)) nx1=x1; if(present(nx2)) nx2=x2
  +            if(present(ny1)) ny1=y1; if(present(ny2)) ny2=y2
  +            if(present(nz1)) nz1=z1; if(present(nz2)) nz2=z2
             endif
           case('UnstructuredGrid')
             call get_int(buffer=s_buffer, attrib='NumberOfCells', val=NC_NN, E_IO=E_IO)
  
positive.code:       if(E_IO == 0) then      
          read(aux,*, iostat=E_IO) nx1,nx2,ny1,ny2,nz1,nz2
          if(E_IO == 0) then      
            NN = (nx2-nx1+1)*(ny2-ny1+1)*(nz2-nz1+1)
            E_IO = search(from=pos, inside='Coordinates', to_find='DataArray', with_attribute='Name', of_value='X', buffer=s_buffer)
            call get_int(buffer=s_buffer,  attrib='offset', val=offsX, E_IO=E_IO)
            call get_char(buffer=s_buffer, attrib='format', val=fmtX,  E_IO=E_IO)
  
negative.code:               trim(adjustlt(Upper_Case(typeZ)))/='FLOAT32') then
              E_IO = -1_I4P 
            else
              allocate(X(nx1:nx2), Y(ny1:ny2), Z(nz1:nz2), stat=E_IO)
              read(unit=vtk(rf)%u, iostat=E_IO, pos = vtk(rf)%ioffset+offsX) N_Byte, (X(i), i=nx1,nx2) !get appended array
              read(unit=vtk(rf)%u, iostat=E_IO, pos = vtk(rf)%ioffset+offsY) N_Byte, (Y(i), i=ny1,ny2) !get appended array
              read(unit=vtk(rf)%u, iostat=E_IO, pos = vtk(rf)%ioffset+offsZ) N_Byte, (Z(i), i=nz1,nz2) !get appended array
            endif
          endif
        endif
  