anchor.diff:        endif
   
       case(binary)
  -! not implemented
  +
  +      rewind(unit=vtk(rf)%u, iostat=E_IO)
  +      E_IO = move(inside='StructuredGrid', to_find='Piece', repeat=np, cf=rf, buffer=s_buffer) ! find the 'np' piece
  +      inquire(unit=vtk(rf)%u, pos=pos, iostat=E_IO) !annotate the current position in the file
  +      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
  +        if(E_IO == 0) then      
  +          NN = (nx2-nx1+1)*(ny2-ny1+1)*(nz2-nz1+1)
  +          E_IO = search(from=pos, inside='Points', to_find='DataArray', with_attribute='Name', of_value='Points', &
  +                        buffer=s_buffer,content=data)
  +          call get_char(buffer=s_buffer, attrib='format', val=fmt,  E_IO=E_IO)
  +          call get_char(buffer=s_buffer, attrib='type', val=type,  E_IO=E_IO)
  +          if (trim(adjustlt(Upper_Case(fmt)))/='BINARY' .or. &
  +              trim(adjustlt(Upper_Case(type)))/='FLOAT64') then
  +            E_IO = -1_I4P 
  +          else
  +            ! Decode base64 packed data
  +            data=trim(adjustlt(data))
  +            allocate(dI1P(3*NN*int(BYR8P,I4P)+int(BYI4P,I4P)))
  +            call b64_decode(code=data,n=dI1P); if(allocated(data)) deallocate(data)
  +            ! Unpack data [1xI4P,3*NNxR8P]
  +            N_byte =  transfer(dI1P(1:int(BYI4P,I4P)),N_byte)
  +            s = size(transfer(dI1P(int(BYI4P,I4P)+1:),XYZp)); allocate(XYZp(1:s))
  +            XYZp = transfer(dI1P(int(BYI4P,I4P)+1:),XYZp); if(allocated(dI1P)) deallocate(dI1P)
  +            allocate(X(NN), Y(NN), Z(NN), stat=E_IO)
  +            do i=1,NN; X(i)=XYZp(i*3-2); Y(i)=XYZp(i*3-1); Z(i)=XYZp(i*3); enddo
  +            if(allocated(XYZp)) deallocate(XYZp)
  +          endif
  +        endif
  +      endif
   
       case(raw)
   
  
positive.code:   character(len=:), allocatable       :: fmt
    character(len=:), allocatable       :: type
    character(len=:), allocatable       :: data
    integer(I4P)                        :: np, i, j, k, l, offs, N_Byte, pos
  
    !---------------------------------------------------------------------------------------------------------------------------------
  
    !---------------------------------------------------------------------------------------------------------------------------------
  
negative.code:   character(len=:), allocatable       :: fmt
    character(len=:), allocatable       :: type
    character(len=:), allocatable       :: data
    integer(I4P)                        :: np, i, offs, N_Byte, pos, s
    integer(I1P), allocatable           :: dI1P(:)
    real(R8P), allocatable              :: XYZp(:)
    !---------------------------------------------------------------------------------------------------------------------------------
  
    !---------------------------------------------------------------------------------------------------------------------------------
  