diff --git a/core/src/main/java/se/su/dsv/scipro/finalseminar/FinalSeminarServiceImpl.java b/core/src/main/java/se/su/dsv/scipro/finalseminar/FinalSeminarServiceImpl.java
index 54181242e3..02892489a0 100755
--- a/core/src/main/java/se/su/dsv/scipro/finalseminar/FinalSeminarServiceImpl.java
+++ b/core/src/main/java/se/su/dsv/scipro/finalseminar/FinalSeminarServiceImpl.java
@@ -2,8 +2,10 @@ package se.su.dsv.scipro.finalseminar;
 
 import com.google.common.eventbus.EventBus;
 import com.querydsl.core.BooleanBuilder;
+import com.querydsl.core.types.SubQueryExpressionImpl;
 import com.querydsl.core.types.dsl.BooleanExpression;
 import com.querydsl.core.types.dsl.Expressions;
+import com.querydsl.jpa.JPAExpressions;
 import jakarta.inject.Inject;
 import jakarta.inject.Provider;
 import jakarta.persistence.EntityManager;
@@ -543,8 +545,15 @@ public class FinalSeminarServiceImpl extends AbstractServiceImpl<FinalSeminar, L
 
     private BooleanExpression unfinishedSeminars(Date after, Date before) {
         QFinalSeminar seminar = QFinalSeminar.finalSeminar;
+        QFinalSeminarOpposition opposition = QFinalSeminarOpposition.finalSeminarOpposition;
         BooleanExpression ungradedParticipant = Expressions.anyOf(
-            seminar.oppositions.any().grade.isNull(),
+            seminar.oppositions
+                .any()
+                .id.in(
+                    JPAExpressions.select(opposition.id)
+                        .from(opposition)
+                        .where(opposition.grade.isNull().and(opposition.improvementsRequestedAt.isNull()))
+                ),
             seminar.activeParticipations.any().grade.isNull(),
             seminar.respondents.any().grade.isNull()
         );
diff --git a/core/src/test/java/se/su/dsv/scipro/finalseminar/FinalSeminarServiceImplIntegrationTest.java b/core/src/test/java/se/su/dsv/scipro/finalseminar/FinalSeminarServiceImplIntegrationTest.java
index 3cced9804a..9d86984f17 100644
--- a/core/src/test/java/se/su/dsv/scipro/finalseminar/FinalSeminarServiceImplIntegrationTest.java
+++ b/core/src/test/java/se/su/dsv/scipro/finalseminar/FinalSeminarServiceImplIntegrationTest.java
@@ -8,6 +8,7 @@ import static se.su.dsv.scipro.test.Matchers.isRight;
 
 import com.google.common.collect.Lists;
 import jakarta.inject.Inject;
+import java.time.Duration;
 import java.time.LocalDate;
 import java.time.Month;
 import java.time.ZonedDateTime;
@@ -30,6 +31,9 @@ public class FinalSeminarServiceImplIntegrationTest extends IntegrationTest {
     @Inject
     private FinalSeminarService finalSeminarService;
 
+    @Inject
+    private FinalSeminarOppositionService finalSeminarOppositionService;
+
     private ProjectType projectType;
     private FinalSeminar futureFinalSeminar;
     private User user;
@@ -309,6 +313,43 @@ public class FinalSeminarServiceImplIntegrationTest extends IntegrationTest {
         assertThat(finalSeminarService.canOppose(user, finalSeminar, otherProject), isRight(anything()));
     }
 
+    @Test
+    public void seminar_is_not_unfinished_if_opponent_has_improvements_requested() {
+        FinalSeminar seminar = createFinalSeminar(createProject(), -6);
+        FinalSeminarOpposition finalSeminarOpposition = addOpposition(seminar, null);
+        addOppositionReport(finalSeminarOpposition);
+
+        Date after = Date.from(seminar.getStartDate().toInstant().minus(Duration.ofDays(1)));
+        Date before = Date.from(seminar.getStartDate().toInstant().plus(Duration.ofDays(1)));
+
+        List<FinalSeminar> unfinishedSeminars = finalSeminarService.findUnfinishedSeminars(
+            after,
+            before,
+            new PageRequest(0, 5)
+        );
+
+        assertThat(unfinishedSeminars, hasItem(seminar));
+
+        finalSeminarOppositionService.requestImprovements(finalSeminarOpposition, "improvements");
+
+        List<FinalSeminar> afterImprovements = finalSeminarService.findUnfinishedSeminars(
+            after,
+            before,
+            new PageRequest(0, 5)
+        );
+
+        assertThat(afterImprovements, not(hasItem(seminar)));
+    }
+
+    private static void addOppositionReport(FinalSeminarOpposition finalSeminarOpposition) {
+        GradingReportTemplate gradingReportTemplate = new GradingReportTemplate(
+            finalSeminarOpposition.getProjectType(),
+            LocalDate.now()
+        );
+        OppositionReport oppositionReport = new OppositionReport(gradingReportTemplate, finalSeminarOpposition);
+        finalSeminarOpposition.setOppositionReport(oppositionReport);
+    }
+
     private FinalSeminar createFutureFinalSeminarSomeDaysAgo(final int daysAgo) {
         FinalSeminar finalSeminar = initFinalSeminar(createProject(), 5);
         final Date dateCreated = Date.from(ZonedDateTime.now().minusDays(daysAgo).toInstant());
@@ -340,10 +381,10 @@ public class FinalSeminarServiceImplIntegrationTest extends IntegrationTest {
         save(seminar);
     }
 
-    private void addOpposition(FinalSeminar seminar, FinalSeminarGrade grade) {
+    private FinalSeminarOpposition addOpposition(FinalSeminar seminar, FinalSeminarGrade grade) {
         FinalSeminarOpposition opposition = createOpposition(seminar);
         opposition.setGrade(grade);
-        save(opposition);
+        return save(opposition);
     }
 
     private OppositionReport createOppositionReport(FinalSeminarOpposition opposition) {