diff --git a/src/myzip/myzip.c b/src/myzip/myzip.c
index 808bb4bfb4453a6bddb09878756f8605557971c9..2a7ba1d64ee1c0ae8e3ea228d530ecd4a8f2baad 100644
--- a/src/myzip/myzip.c
+++ b/src/myzip/myzip.c
@@ -51,7 +51,7 @@ int main(int argc, char *argv[])
     const char *output_file_name = argv[1];
     const char *input_file_name = argv[2];
     FILE *input_file = fopen(input_file_name, "r");
-    FILE *output_file = fopen(output_file_name, "w");
+    FILE *output_file = fopen(output_file_name, "w+");
 
     if (input_file == NULL)
     {
@@ -75,11 +75,11 @@ int main(int argc, char *argv[])
     write_u32(output_file, 0x04034b50); /* local file signature */
     write_u16(output_file, 20); /* extract version */
     write_u16(output_file, 0); /* general purpose flag */
-    write_u16(output_file, 0); /* compression method */
+    write_u16(output_file, 8); /* compression method */
     write_u16(output_file, 0); /* last mod file time */
     write_u16(output_file, 0); /* last mod file date */
     write_u32(output_file, 0xDEADBEEF); /* crc */
-    size_t compressed_size_loc = ftell(input_file); 
+    size_t compressed_size_loc = ftell(output_file); 
     write_u32(output_file, 0); /* compressed file size */
     write_u32(output_file, input_file_size); /* uncompressed file size */
     write_u16(output_file, strlen(input_file_name)); /* file name len */
@@ -88,12 +88,12 @@ int main(int argc, char *argv[])
     /* extra field */
     /* copy input file to output */
     uint32_t compressed_size = write_lz77_stream(input_file, output_file);
+    printf("Compressed size = %d\n", compressed_size);
 
-
-    size_t central_directory_start = ftell(input_file); /* save location */
-    fseek(input_file, compressed_size_loc, SEEK_SET); /* move back */
+    size_t central_directory_start = ftell(output_file); /* save location */
+    fseek(output_file, compressed_size_loc, SEEK_SET); /* move back */
     write_u32(output_file, compressed_size); /* write compressed size */
-    fseek(input_file, central_directory_start, SEEK_SET); /* return to writing */
+    fseek(output_file, central_directory_start, SEEK_SET); /* return to writing */
 
     /* (2) CENTRAL DIRECTORY RECORD */
     write_u32(output_file, 0x02014b50); /* central directory signature */
@@ -101,7 +101,7 @@ int main(int argc, char *argv[])
     write_u8 (output_file, 65); /* made by */
     write_u16(output_file, 20); /* extract version */
     write_u16(output_file, 0); /* general purpose bit flag */
-    write_u16(output_file, 0); /* compression method */
+    write_u16(output_file, 8); /* compression method */
     write_u16(output_file, 0); /* last mod file time */
     write_u16(output_file, 0); /* last mod file date */
     write_u32(output_file, 0xdeadbeef); /* crc */