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;
//	  if(get_data()<=0)return -1;
          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;
	}
      }
    }
  }