diff --git a/frontend/src/store/modules/submission-notes.ts b/frontend/src/store/modules/submission-notes.ts
index 4dfd9d2997e4a7a64475475d257c92a5a9cec4a3..7d5ba0939d022298f16afe14eb2624b4bd208e36 100644
--- a/frontend/src/store/modules/submission-notes.ts
+++ b/frontend/src/store/modules/submission-notes.ts
@@ -141,14 +141,17 @@ async function submitFeedback ({state}: BareActionContext<SubmissionNotesState,
     isFinal: isFinal,
     ofSubmission: state.submission.pk
   }
-  if (Object.keys(state.updatedFeedback.feedbackLines || {}).length > 0) {
-    feedback.feedbackLines = state.updatedFeedback.feedbackLines
-  }
   if (state.origFeedback.score === undefined && state.updatedFeedback.score === undefined) {
     throw new Error('You need to give a score.')
-  } else if (state.updatedFeedback.score !== undefined) {
-    feedback.score = state.updatedFeedback.score
+  } else {
+    feedback.score = state.updatedFeedback.score || state.origFeedback.score || 0
+  }
+  if (Object.keys(state.updatedFeedback.feedbackLines || {}).length > 0) {
+    feedback.feedbackLines = state.updatedFeedback.feedbackLines
+  } else if (feedback.score! < SubmissionNotes.submissionType.fullScore!) {
+    throw new Error('You need to provide a reason for a reduced score.')
   }
+  // delete those comments that have been marked for deletion
   await SubmissionNotes.deleteComments()
   if (!state.hasOrigFeedback) {
     return api.submitFeedbackForAssignment({feedback})