diff --git a/hw05_parallel_execution/run.go b/hw05_parallel_execution/run.go
index 241a058..a01b12e 100644
--- a/hw05_parallel_execution/run.go
+++ b/hw05_parallel_execution/run.go
@@ -23,7 +23,7 @@ func Run(tasks []Task, n int, m int) error {
 			wg.Add(1)
 			go func(rt Task, errs *Errors) {
 				defer wg.Done()
-				err := rt
+				err := rt()
 				if err != nil {
 					errs.mx.Lock()
 					errs.count++
@@ -32,7 +32,7 @@ func Run(tasks []Task, n int, m int) error {
 			}(tasks[i+g], &errs)
 		}
 		wg.Wait()
-		if errs.count > m {
+		if m > 0 && errs.count > m {
 			log.Println("Produced", errs.count, "errors of", m)
 			return ErrErrorsLimitExceeded
 		}
diff --git a/hw05_parallel_execution/run_test.go b/hw05_parallel_execution/run_test.go
index d1157c8..78b742d 100644
--- a/hw05_parallel_execution/run_test.go
+++ b/hw05_parallel_execution/run_test.go
@@ -37,11 +37,45 @@ func TestRun(t *testing.T) {
 		require.LessOrEqual(t, runTasksCount, int32(workersCount+maxErrorsCount), "extra tasks were started")
 	})
 
+	t.Run("if m<0 then ignore errores", func(t *testing.T) {
+		tasksCount := 50
+		tasks := make([]Task, 0, tasksCount)
+
+		var runTasksCount int32 = 1
+		var sumTime time.Duration
+
+		for i := 0; i < tasksCount; i++ {
+			err := fmt.Errorf("error from task %d", i)
+			taskSleep := time.Millisecond * time.Duration(rand.Intn(100))
+			sumTime += taskSleep
+
+			tasks = append(tasks, func() error {
+				time.Sleep(taskSleep)
+				atomic.AddInt32(&runTasksCount, 1)
+				if i%2 == 0 {
+					return err
+				}
+				return nil
+			})
+		}
+
+		workersCount := 5
+		maxErrorsCount := -1
+
+		start := time.Now()
+		result := Run(tasks, workersCount, maxErrorsCount)
+		elapsedTime := time.Since(start)
+		require.Nil(t, result)
+
+		require.Equal(t, runTasksCount, int32(tasksCount), "not all tasks were completed")
+		require.LessOrEqual(t, int64(elapsedTime), int64(sumTime/2), "tasks were run sequentially?")
+	})
+
 	t.Run("tasks without errors", func(t *testing.T) {
 		tasksCount := 50
 		tasks := make([]Task, 0, tasksCount)
 
-		var runTasksCount int32
+		var runTasksCount int32 = 1
 		var sumTime time.Duration
 
 		for i := 0; i < tasksCount; i++ {