public function rotate($force = false)
    {
        $rotator = $this->options['backup_time'];

        if (true===$force || $this->mustRotate()) {
            $dir = dirname($this->file_path);
            $old_file = $this->getFilename(basename($this->file_path), $rotator);
            if (file_exists($dir . '/' . $old_file)) {
                @unlink($dir . '/' . $old_file);
            }
            if (false!==strpos($this->flag, $this->options['filename_iterator_tag'])) {
                while ($rotator-- > 0) {
                    $original_file = $this->getFilename(basename($this->file_path), $rotator);
                    if (file_exists($dir . '/' . $original_file)) {
                        $target_file = $this->getFilename(basename($this->file_path), ($rotator + 1));
                        $ok = @rename($dir . '/' . $original_file, $dir . '/' . $target_file);
                    }
                }
            } else {
                $target_file = $this->getFilename(basename($this->file_path), 1);
                $ok = @rename($this->file_path, $dir . '/' . $target_file);
            }
            return $ok;
        }
        return true;
    }