             }
 
             if newLowerBound >= newUpperBound {
-                self.presentErrorAlert(title: "Error Saving 💔", message: "Lower bound for grade #\(index + 1) must be less than upper bound")
+                self.presentErrorAlert(title: "Error Saving 💔", message: "Lower bound for grade #\(percentIndex + 1) must be less than upper bound")
                 return nil
             }
 
             newPercentages.append(newLowerBound...newUpperBound)
+            percentIndex += 1
         }
 
         return newPercentages

    }

    private func resetPercentages() {
        let type = DatabaseManager.shared.realm.objects(GPAScale.self).first!.scaleType
        GradeRubric.createRubric(ofType: type)
        self.resetFields()
        self.updateFields()
    }

    /// The rows which will contain any + or - fields
    private let plusRows = [0, 2, 3, 5, 6,  8, 9, 11]

    /// The realm notifcation token for listening to changes on the GPAScale
    private var notifToken: NotificationToken?

    /// The GradeRubric object which this table manages
    private var rubric: GradeRubric {
        return DatabaseManager.shared.realm.objects(GradeRubric.self).first!
    }

    /// The scale type of the rubric
    private var scaleType: GPAScaleType {
        return DatabaseManager.shared.realm.objects(GPAScale.self).first!.scaleType
    }

    /// The grade percentage views, 1 per cell that the table statically displays
