code: int time_seek(float seconds){
      // translate time to PCM position and call pcm_seek
  
      int link=-1;
      long pcm_total=pcm_total(-1);
      float time_total=time_total(-1);
  
      if(!seekable)
        return (-1); // don't dump machine if we can't seek
      if(seconds<0||seconds>time_total){
        //goto seek_error;
        pcm_offset=-1;
        decode_clear();
        return -1;
      }
  
      // which bitstream section does this time offset occur in?
      for(link=links-1; link>=0; link--){
        pcm_total-=pcmlengths[link];
        time_total-=time_total(link);
        if(seconds>=time_total)
          break;
      }
  
      // enough information to convert time offset to pcm offset
      {
        long target=(long)(pcm_total+(seconds-time_total)*vi[link].rate);
        return (pcm_seek(target));
      }
  
      //seek_error:
      // dump machine so we're in a known state
      //pcm_offset=-1;
      //decode_clear();
      //return -1;
    }
docs: returns zero on success, nonzero on failure