private int get_next_page(Page page, long boundary){
    if(boundary>0)
      boundary+=offset;
    while(true){
      int more;
      if(boundary>0&&offset>=boundary)
        return OV_FALSE;
      more=oy.pageseek(page);
      if(more<0){
        offset-=more;
      }
      else{
        if(more==0){
          if(boundary==0)
            return OV_FALSE;
          int ret=get_data();
          if(ret==0)
            return OV_EOF;
          if(ret<0)
            return OV_EREAD;
        }
        else{
          int ret=(int)offset; //!!!
          offset+=more;
          return ret;
        }
      }
    }
  }