diff --git a/app/models/concerns/taskable.rb b/app/models/concerns/taskable.rb
index de7588fea86e2f68692af95898b2bfc15a715048..df2a9e3e84be06a8d7c8a8f01b3de00cb5382d4b 100644
--- a/app/models/concerns/taskable.rb
+++ b/app/models/concerns/taskable.rb
@@ -31,7 +31,7 @@ module Taskable
       old_task = old_tasks[i]
       next unless old_task
 
-      new_task.source == new_task.source && new_task.complete? != old_task.complete?
+      new_task.source == old_task.source && new_task.complete? != old_task.complete?
     end
   end
 
diff --git a/spec/services/issues/update_service_spec.rb b/spec/services/issues/update_service_spec.rb
index adb3aa143ae9838ed717592e6289eb3c27161af8..bc6a26416a2fbd7d00c90e049736c40466c19f5e 100644
--- a/spec/services/issues/update_service_spec.rb
+++ b/spec/services/issues/update_service_spec.rb
@@ -121,6 +121,25 @@ describe Issues::UpdateService do
           expect(note).to be_nil
         end
       end
+
+      context 'when a Task list with a completed item is totally replaced' do
+        before do
+          update_issue({ description: "- [ ] Task 1\n- [X] Task 2" })
+          update_issue({ description: "- [ ] One\n- [ ] Two\n- [ ] Three" })
+        end
+
+        it 'does not create a system note referencing the position the old item' do
+          note = find_note('Marked the task **Two** as incomplete')
+
+          expect(note).to be_nil
+        end
+
+        it 'should not generate a new note at all' do
+          expect {
+            update_issue({ description: "- [ ] One\n- [ ] Two\n- [ ] Three" })
+          }.not_to change { Note.count }
+        end
+      end
     end
 
   end