diff --git a/pkg/ytdlp/model.go b/pkg/ytdlp/model.go
index 78a9e5f..ba9d6a5 100644
--- a/pkg/ytdlp/model.go
+++ b/pkg/ytdlp/model.go
@@ -199,7 +199,7 @@ type Format struct {
 	ManifestURL        *string            `json:"manifest_url,omitempty"`
 	Language           *Language          `json:"language"`
 	Preference         interface{}        `json:"preference"`
-	Quality            *int64             `json:"quality,omitempty"`
+	Quality            *float64           `json:"quality,omitempty"`
 	HasDRM             *bool              `json:"has_drm,omitempty"`
 	SourcePreference   *int64             `json:"source_preference,omitempty"`
 	ASR                *int64             `json:"asr"`
diff --git a/src/vfs/archive.go b/src/vfs/archive.go
index 376ad7f..4dfd8f5 100644
--- a/src/vfs/archive.go
+++ b/src/vfs/archive.go
@@ -239,6 +239,10 @@ func (d *archiveFile) loadMore(ctx context.Context, to int64) error {
 	if err != nil && err != io.EOF {
 		return fmt.Errorf("error copying from archive file reader: %w", err)
 	}
+	_, err = d.buffer.Seek(d.offset, io.SeekStart)
+	if err != nil {
+		return fmt.Errorf("failed to seek to start of the file: %w", err)
+	}
 
 	return nil
 }
@@ -252,6 +256,7 @@ func (d *archiveFile) Read(ctx context.Context, p []byte) (n int, err error) {
 	if err != nil && err != io.EOF {
 		return n, fmt.Errorf("failed to read from buffer: %w", err)
 	}
+	d.offset += int64(n)
 	return n, nil
 }
 
@@ -292,12 +297,12 @@ func ZipLoader(ctx context.Context, ctxreader ctxio.ReaderAt, size int64) (map[s
 
 			zr, err := zip.NewReader(reader, size)
 			if err != nil {
-				return nil, err
+				return nil, fmt.Errorf("failed to create zip reader: %w", err)
 			}
 
 			rc, err := zr.File[i].Open()
 			if err != nil {
-				return nil, err
+				return nil, fmt.Errorf("failed to open file in zip archive: %w", err)
 			}
 
 			return rc, nil
diff --git a/src/vfs/archive_test.go b/src/vfs/archive_test.go
index c6c1ee3..117ea49 100644
--- a/src/vfs/archive_test.go
+++ b/src/vfs/archive_test.go
@@ -4,7 +4,6 @@ import (
 	"archive/zip"
 	"bytes"
 	"context"
-	"io"
 	"testing"
 
 	"git.kmsign.ru/royalcat/tstor/src/vfs"
@@ -59,13 +58,24 @@ func TestZipFilesystem(t *testing.T) {
 	require.Equal("1.txt", e.Name())
 	require.NotNil(e)
 
-	out := make([]byte, 11)
+	out := make([]byte, 5)
 	f, err := zfs.Open(ctx, "/path/to/test/file/1.txt")
 	require.NoError(err)
 	n, err := f.Read(ctx, out)
-	require.Equal(io.EOF, err)
-	require.Equal(11, n)
-	require.Equal(fileContent, out)
+	require.NoError(err)
+	require.Equal(5, n)
+	require.Equal([]byte("Hello"), out)
+
+	outSpace := make([]byte, 1)
+	n, err = f.Read(ctx, outSpace)
+	require.NoError(err)
+	require.Equal(1, n)
+	require.Equal([]byte(" "), outSpace)
+
+	n, err = f.Read(ctx, out)
+	require.NoError(err)
+	require.Equal(5, n)
+	require.Equal([]byte("World"), out)
 
 }