diff --git a/Code_With_Threads/main.c b/Code_With_Threads/main.c
index ff03f7a59fe8e3f3a40298a44f14d9814f55de43..b0595b712f94845953fa68f6ce74ee900f48d80d 100644
--- a/Code_With_Threads/main.c
+++ b/Code_With_Threads/main.c
@@ -13,7 +13,6 @@ FILE *file_in;
 FILE *file_out;
 char *f_in;
 char *f_out;
-//int number_lines;
 int nthreads = 1;
 buffer1 *buffer_1;
 buffer2 *buffer_2;
@@ -49,7 +48,7 @@ void *reading() {
     buffer_1->can_stop = true;
     pthread_mutex_unlock(&(buffer_1->mutex));
 
-    return EXIT_SUCCESS;
+    return NULL;
 }
 
 
@@ -76,20 +75,12 @@ void *calculating() {
     buffer_2->can_stop = true;
     pthread_mutex_unlock(&(buffer_2->mutex));
 
-    return EXIT_SUCCESS;
+    return NULL;
 }
 
 void *writing() {
-    /*
-    number_lines = count_lines(f_in);
-    while (number_lines > 0) {
-        number_lines -= 1;
-    */
-        
-
     while(buffer_2->can_stop == false || buffer_2->prime_numbers->length > 0) {
 
-
         sem_wait(&(buffer_2->full));
         pthread_mutex_lock(&(buffer_2->mutex));
         list_t *removed = get_node_lst(buffer_2->prime_numbers);
@@ -105,9 +96,7 @@ void *writing() {
         fprintf(file_out, "\n");
     }
 
-    //printf("number_lines = %d \n", number_lines);
-
-    return EXIT_SUCCESS;
+    return NULL;
 }
 
 int main(int argc, char *argv[]) {
@@ -169,6 +158,7 @@ int main(int argc, char *argv[]) {
         printf("Read_thread_join OK.\n");
     }
 
+    /*
     for (int i = 0; i < nthreads; i++) {
         if (pthread_cancel(calc[i]) != 0) {
             printf("Error with cancel calculating thread[%d].\n", i);
@@ -185,6 +175,22 @@ int main(int argc, char *argv[]) {
             printf("Calc_thread_join[%d] OK.\n", i);
         }
     }
+    */
+
+    for (int i = 0; i < nthreads; i++) {
+        if (pthread_cancel(calc[i]) != 0) {
+            printf("Error with cancel calculating thread[%d].\n", i);
+            if (pthread_join(calc[i], NULL) != 0) {
+                printf("Error with join calculating thread.\n");
+                return -1;
+            } else {
+                printf("Calc_thread_join[%d] OK.\n", i);
+            }
+        } else {
+            printf("Calc_thread_cancel[%d].\n", i);
+        }
+        
+    }
 
     if (pthread_join(write, NULL) != 0) {
         printf("Error with join writing thread.\n");
@@ -193,14 +199,12 @@ int main(int argc, char *argv[]) {
         printf("Write_thread_join OK.\n");
     }
 
-
     fclose(file_in);
     fclose(file_out);
     printf("Files close.\n");
 
     clear_list_t(buffer_1->numbers);
     free(buffer_1->numbers);
-    //clear_list_lst(buffer_2->prime_numbers);
     free(buffer_2->prime_numbers);
 
     free(buffer_1);