diff --git a/smash/web/models.py b/smash/web/models.py
index f6ee5abf41fd11e50f55e1e2d2af981bf33334ba..2fef24279966578dbaf6da88bf85723ea4bf7a74 100644
--- a/smash/web/models.py
+++ b/smash/web/models.py
@@ -237,18 +237,14 @@ class Visit(models.Model):
         self.is_finished = True
         self.save()
 
-        visit_started = self.datetime_end
+        if  (not self.subject.dead) and (not self.subject.resigned):
+            visit_started = self.datetime_begin
 
-        appointments = Appointment.objects.filter(visit=self)
+            time_to_next_visit = datetime.timedelta(days=365)
+            if self.subject.type== Subject.SUBJECT_TYPE_CHOICES_CONTROL:
+                time_to_next_visit = datetime.timedelta(days=365*3+366)
 
-        for appointment in appointments:
-            visit_started = min(visit_started,appointment.datetime_when)
-
-        time_to_next_visit = datetime.timedelta(days=365)
-        if self.subject.type== Subject.SUBJECT_TYPE_CHOICES_CONTROL:
-            time_to_next_visit = datetime.timedelta(days=365*3+366)
-
-        Visit.objects.create(
+            Visit.objects.create(
                             subject = self.subject,
                             datetime_begin = visit_started+time_to_next_visit,
                             datetime_end = visit_started+time_to_next_visit+datetime.timedelta(days=93)
diff --git a/smash/web/tests/test_model_visit.py b/smash/web/tests/test_model_visit.py
new file mode 100644
index 0000000000000000000000000000000000000000..670d27346c764aa7deb37ce407c77baa7fe03806
--- /dev/null
+++ b/smash/web/tests/test_model_visit.py
@@ -0,0 +1,42 @@
+from django.contrib.auth.models import User
+from django.test import TestCase, RequestFactory
+from django.urls import reverse
+
+from web.views import *
+
+from web.models import *
+
+from web.tests.functions import *
+
+class VisitModelTests(TestCase):
+
+    def test_mark_as_finished(self):
+        subject = create_subject()
+        visit = create_visit(subject)
+
+        visit.mark_as_finished()
+
+        visit_count = Visit.objects.filter(subject=subject).count()
+        self.assertEquals(2, visit_count)
+
+    def test_mark_as_finished_2(self):
+        subject = create_subject()
+        visit = create_visit(subject)
+        subject.dead=True
+        subject.save()
+
+        visit.mark_as_finished()
+
+        visit_count = Visit.objects.filter(subject=subject).count()
+        self.assertEquals(1, visit_count)
+
+    def test_mark_as_finished_3(self):
+        subject = create_subject()
+        visit = create_visit(subject)
+        subject.resigned=True
+        subject.save()
+
+        visit.mark_as_finished()
+
+        visit_count = Visit.objects.filter(subject=subject).count()
+        self.assertEquals(1, visit_count)