diff --git a/src/libs/routes/classroomCount.js b/src/libs/routes/classroomCount.js
index 65fbceedfcb1e8ce21060b249f20851873dce367..efb64d267dc622d1bb9c41059d2c25a205e2dd85 100644
--- a/src/libs/routes/classroomCount.js
+++ b/src/libs/routes/classroomCount.js
@@ -286,13 +286,25 @@ classroomCountApp.post('/', rqf.parse(), (req, res, next) => {
         j = 0;
         let educationLevelSet = new Set();
         let enrollment = enrollments[j];
+
         while(enrollmentMatch && j < enrollments.length) {
             enrollment = enrollments[j];
+
+            // Remove se o período é nulo (não dá pra usar no cálculo)
+            if(enrollment.period_id == null) {
+                enrollments.splice(j, 1);
+                continue;
+            }
+
             if(typeof enrollment === 'undefined') {
                 ++j;
                 continue;
             }
-            if(enrollment.city_id != classroom.city_id) { // Se as cidades não são iguais, já passamos do range
+
+            if(classroom.city_name < enrollment.city_name) { // Se as cidades não são iguais, já passamos do range
+                enrollmentMatch = false;
+                continue;
+            } else if(classroom.city_name > enrollment.city_name) {
                 ++j;
                 continue;
             }
@@ -302,11 +314,6 @@ classroomCountApp.post('/', rqf.parse(), (req, res, next) => {
                 continue;
             }
 
-            // Remove se o período é nulo (não dá pra usar no cálculo)
-            if(enrollment.period_id == null) {
-                enrollments.splice(j, 1);
-                continue;
-            }
 
             // Temos uma matrícula com cidade, ano e localidades certos
             // "Consome" a matrícula (remove do vetor de matrículas)
@@ -371,7 +378,8 @@ classroomCountApp.post('/', rqf.parse(), (req, res, next) => {
             educationLevel.enrollment.full_period_classes = Math.ceil((educationLevel.enrollment.total_enrollment_day * (enrollmentEducationLevel.offerGoal/100)) / enrollmentEducationLevel.numberStudentClass);
 
             // Turmas diurnas
-            educationLevel.enrollment.day_classes = Math.ceil((educationLevel.enrollment.total_enrollment_day / enrollmentEducationLevel.numberStudentClass) - educationLevel.enrollment.full_period_classes);
+            // Matrículas diurnas - matrículas integrais
+            educationLevel.enrollment.day_classes = Math.ceil((educationLevel.enrollment.total_enrollment_day * (1 - enrollmentEducationLevel.offerGoal/100)) / enrollmentEducationLevel.numberStudentClass);
 
             // Turmas noturnas
             educationLevel.enrollment.night_classes = Math.ceil((educationLevel.enrollment.total_enrollment_night / enrollmentEducationLevel.numberStudentClass));
@@ -428,6 +436,7 @@ classroomCountApp.post('/', rqf.parse(), (req, res, next) => {
 
             // Fazer "merge" do array locations da cidade com o da agregação
             if(currentObj.locations.length == 0) {
+                // Pode ser que a cidade atual tenha menos localidades que o total (só urbana ou só rural)
                 currentObj.locations = [...city.locations];
             } else {
                 let j = 0;
@@ -444,10 +453,16 @@ classroomCountApp.post('/', rqf.parse(), (req, res, next) => {
                     } else if(cityLocation.location_id > currentLocation.location_id) {
                         ++k;
                         currentLocation = currentObj.locations[k];
+                        // Se a localidade da cidade é  maior que a localidade do objeto atual E o vetor de localidades do objeto atual
+                        // acaba, então esta localidade falta no objeto atual, pois as localidades estão ordenadas
+                        if(typeof currentLocation == 'undefined' && typeof cityLocation !== 'undefined') {
+                            currentObj.locations[k] = cityLocation;
+                            currentLocation = currentObj.locations[k];
+                        }
                         continue;
                     }
 
-                    // Fazer merge do array education_level
+                    // Fazer "merge" do array education_level
                     if(currentLocation.education_level.length == 0) {
                         currentLocation.education_level = [...cityLocation.education_level];
                     } else {
@@ -492,7 +507,7 @@ classroomCountApp.post('/', rqf.parse(), (req, res, next) => {
         }
     }
 
-    req.result = /*{result, enrollments} //*/ reduction || result;
+    req.result = reduction || result;
 
     next();
 }, response('classroom_count'));