diff --git a/CHANGELOG.md b/CHANGELOG.md
index e45a014e419123986ad65d1f4d5a523166eb1cb5..05e1e145819b3536c8ec6fdf58db7c5444a238e6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,10 +8,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
 ### Added
 - Add financial route
 - Add employees route
-
 ### Changed
 - Fix transport route
 - Fix return where integral time is null
+- Classroom count route returns school year results for education level 1
 
 ## 1.7.0 - 2018-09-20
 ### Changed
diff --git a/src/libs/routes/classroomCount.js b/src/libs/routes/classroomCount.js
index bdec29e54dca56e3f0eb71184e89645002edf0de..d28de14a3671b6cc0823491f853b2a403fe89030 100644
--- a/src/libs/routes/classroomCount.js
+++ b/src/libs/routes/classroomCount.js
@@ -163,8 +163,6 @@ classroomCountApp.post('/', rqf.parse(), (req, res, next) => {
     let classSize = JSON.parse(req.body.class_size) || null;
     let integralTime = JSON.parse(req.body.integral_time) || null;
 
-    console.log(classSize, integralTime);
-
     if(classSize == null || integralTime == null) {
         res.statusCode = 400;
         return res.json({err: {message: "There was an error processing class_size or integral_time. Check your JSON sintax and be sure you're sending both paramenters."}});
@@ -197,7 +195,7 @@ classroomCountApp.post('/', rqf.parse(), (req, res, next) => {
         if(id2str.schoolYear(i) !== id2str.schoolYear(99)) {
             let educationLevelId = Math.floor(i/10);
 
-            let classSize = req.classSize.find((el) => {return el.id === educationLevelId});
+            let classSize = req.classSize.find((el) => {return el.id === educationLevelId || el.id === i});
             let integralTime = req.integralTime.find((el) => {return el.id === educationLevelId});
 
             let numberStudentClass = (typeof classSize !== 'undefined') ? classSize.numberStudentClass : null;
@@ -286,6 +284,7 @@ classroomCountApp.post('/', rqf.parse(), (req, res, next) => {
         let enrollmentMatch = true;
         j = 0;
         let educationLevelSet = new Set();
+        let schoolYearSet = new Set();
         let enrollment = enrollments[j];
 
         while(enrollmentMatch && j < enrollments.length) {
@@ -346,7 +345,11 @@ classroomCountApp.post('/', rqf.parse(), (req, res, next) => {
                         total_classrooms_needed: 0
                     }
                 };
-                
+
+                if(enrollmentEducationLevel.id == 1) {
+                    educationLevel.classes_school_year = [];
+                }
+
                 // Para manter a ordem da etapa de ensino
                 if (location.education_level.length == 0) {
                     location.education_level.push(educationLevel);
@@ -375,20 +378,54 @@ classroomCountApp.post('/', rqf.parse(), (req, res, next) => {
                 educationLevel = location.education_level[k];
             }
 
+            // Adiciona as séries da creche
+            let currentSchoolYear = null;
+            if(enrollmentEducationLevel.id == 1){
+                let schoolYearHash = '' + enrollment.year + enrollment.city_id + enrollment.location_id + enrollment.school_year_id;
+                if(schoolYearSet.has(schoolYearHash)) { // Busca a série escolar
+                    let k = 0;
+                    let el = educationLevel.classes_school_year[k];
+                    while(k < educationLevel.classes_school_year.length) {
+                        if(el.school_year_id != enrollment.school_year_id) {
+                            ++k;
+                            if(k < educationLevel.classes_school_year.length) el = educationLevel.classes_school_year[k];
+                        } else break;
+                    }
+                    if(k >= educationLevel.classes_school_year.length) --k;
+                    currentSchoolYear = educationLevel.classes_school_year[k];
+                } else { // Adiciona uma nova série escolar
+                    let school_year = {
+                        school_year_id: enrollment.school_year_id,
+                        school_year_name: enrollment.school_year_name,
+                        total_enrollment_day: 0,
+                        total_enrollment_night: 0,
+                        full_period_classes: 0,
+                        day_classes: 0,
+                        night_classes: 0,
+                        total_classrooms_needed: 0
+                    }
+                    schoolYearSet.add(schoolYearHash);
+                    educationLevel.classes_school_year.push(school_year);
+                    currentSchoolYear = school_year;
+                }
+            }
+
+            let currentOfferGoal = enrollmentEducationLevel.offerGoal;
+            let currentNumberStudentClass = (enrollment.location_id == 1) ? enrollmentEducationLevel.numberStudentClass.urban : enrollmentEducationLevel.numberStudentClass.country;
+
             // Soma os totais de matrícula da etapa de ensino
             educationLevel.enrollment.total_enrollment_day += (enrollment.period_id < 3 && enrollment.period_id != null) ? enrollment.total : 0;
             educationLevel.enrollment.total_enrollment_night += (enrollment.period_id == 3) ? enrollment.total : 0;
 
             // Calcula o número de turmas parcial
             // Turmas de período integral
-            educationLevel.enrollment.full_period_classes = Math.ceil((educationLevel.enrollment.total_enrollment_day * (enrollmentEducationLevel.offerGoal/100)) / enrollmentEducationLevel.numberStudentClass);
+            educationLevel.enrollment.full_period_classes = Math.ceil((educationLevel.enrollment.total_enrollment_day * (currentOfferGoal/100)) / currentNumberStudentClass);
 
-            // Turmas diurnas
-            // Matrículas diurnas - matrículas integrais
-            educationLevel.enrollment.day_classes = Math.ceil((educationLevel.enrollment.total_enrollment_day * (1 - enrollmentEducationLevel.offerGoal/100)) / enrollmentEducationLevel.numberStudentClass);
+            // Turmas diurnas (matrículas diurnas - matrículas integrais)
+            educationLevel.enrollment.day_classes = Math.ceil((educationLevel.enrollment.total_enrollment_day * (1 - currentOfferGoal/100)) / currentNumberStudentClass);
 
             // Turmas noturnas
-            educationLevel.enrollment.night_classes = Math.ceil((educationLevel.enrollment.total_enrollment_night / enrollmentEducationLevel.numberStudentClass));
+            educationLevel.enrollment.night_classes = Math.ceil((educationLevel.enrollment.total_enrollment_night / currentNumberStudentClass)) || 0;
 
             // Total de salas
             educationLevel.enrollment.total_classrooms_needed = (educationLevel.enrollment.full_period_classes + educationLevel.enrollment.day_classes/2);
@@ -397,6 +434,33 @@ classroomCountApp.post('/', rqf.parse(), (req, res, next) => {
 
             educationLevel.enrollment.total_classrooms_needed = Math.ceil(educationLevel.enrollment.total_classrooms_needed);
 
+            // Faz os mesmos cálculos para a série escolar
+            if(currentSchoolYear) {
+                // Totais de matrícula
+                currentSchoolYear.total_enrollment_day += (enrollment.period_id < 3 && enrollment.period_id != null) ? enrollment.total : 0;
+                currentSchoolYear.total_enrollment_night += (enrollment.period_id == 3) ? enrollment.total : 0;
+                
+                // Número de turmas parcial
+                currentSchoolYear.full_period_classes = Math.ceil((currentSchoolYear.total_enrollment_day * (currentOfferGoal/100)) / currentNumberStudentClass);
+
+                currentSchoolYear.day_classes = Math.ceil((currentSchoolYear.total_enrollment_day * (1 - currentOfferGoal/100)) / currentNumberStudentClass);
+
+                currentSchoolYear.night_classes = Math.ceil((currentSchoolYear.total_enrollment_night / enrollmentEducationLevel.numberStudentClass)) || 0;
+
+                // Total de salas
+                currentSchoolYear.total_classrooms_needed = (currentSchoolYear.full_period_classes + currentSchoolYear.day_classes/2);
+
+                if(currentSchoolYear.night_classes > (currentSchoolYear.day_classes/2)) currentSchoolYear.total_classrooms_needed += (currentSchoolYear.night_classes - (currentSchoolYear.day_classes/2));
+
+                currentSchoolYear.total_classrooms_needed = Math.ceil(currentSchoolYear.total_classrooms_needed);
+
+                function reducer(key) { return (sum, elem) => sum + elem[key]}
+                educationLevel.enrollment.full_period_classes = educationLevel.classes_school_year.reduce(reducer('full_period_classes'), 0);
+                educationLevel.enrollment.day_classes = educationLevel.classes_school_year.reduce(reducer('day_classes'), 0);
+                educationLevel.enrollment.night_classes = educationLevel.classes_school_year.reduce(reducer('night_classes'), 0);
+                educationLevel.enrollment.total_classrooms_needed = educationLevel.classes_school_year.reduce(reducer('total_classrooms_needed'), 0);
+            }
+
             enrollment = enrollments[j];
         }
 
@@ -470,10 +534,11 @@ classroomCountApp.post('/', rqf.parse(), (req, res, next) => {
                         continue;
                     }
 
-                    // Fazer "merge" do array education_level
+                    // Faz "merge" do array education_level
+                    // Se a localidade atual não tem o vetor
                     if(currentLocation.education_level.length == 0) {
                         currentLocation.education_level = [...cityLocation.education_level];
-                    } else {
+                    } else { // Caso já tenha, atualiza os valores
                         let l = 0;
                         while(l < cityLocation.education_level.length) {
                             let cityEducation = cityLocation.education_level[l];
@@ -493,6 +558,42 @@ classroomCountApp.post('/', rqf.parse(), (req, res, next) => {
                                 currentEducation.enrollment.day_classes += cityEducation.enrollment.day_classes;
                                 currentEducation.enrollment.night_classes += cityEducation.enrollment.night_classes;
                                 currentEducation.enrollment.total_classrooms_needed += cityEducation.enrollment.total_classrooms_needed;
+                                if((typeof cityEducation.classes_school_year !== 'undefined') && (typeof currentEducation.classes_school_year !== 'undefined')) {
+                                    let n = 0;
+                                    let o = 0;
+                                    let cityClass = null;
+                                    let currentClass = null;
+                                    while((typeof cityClass !== 'undefined') && (typeof currentClass !== 'undefined')) {
+                                        cityClass = cityEducation.classes_school_year[o];
+                                        currentClass = currentEducation.classes_school_year[n];
+
+                                        // Se a série escolar é menor que a atual, ela não está no vetor, pois o vetor está ordenado e tem range limitado
+                                        if(cityClass.school_year_id < currentClass.school_year_id) {
+                                            currentEducation.classes_school_year.splice(n, 0, cityClass);
+                                            cityClass = cityEducation.classes_school_year[++o];
+                                            continue;
+                                        } else if(cityClass.school_year_id > currentClass.school_year_id) {
+                                            currentClass = currentEducation.classes_school_year[++n];
+                                            // Se o ano escolar da cidade é  maior que a localidade do objeto atual E o vetor de ano escolar do objeto atual
+                                            // acaba, então este ano escolar falta no objeto atual, pois os anos escolares estão ordenados
+                                            if(typeof currentClass == 'undefined' && typeof cityClass !== 'undefined') {
+                                                currentEducation.classes_school_year[n] = cityClass;
+                                                currentClass = currentEducation.classes_school_year[n];
+                                            }
+                                            continue;
+                                        }
+
+                                        currentClass.total_enrollment_day += cityClass.total_enrollment_day;
+                                        currentClass.total_enrollment_night += cityClass.total_enrollment_night;
+                                        currentClass.full_period_classes += cityClass.full_period_classes;
+                                        currentClass.day_classes += cityClass.day_classes;
+                                        currentClass.night_classes += cityClass.night_classes;
+                                        currentClass.total_classrooms_needed += cityClass.total_classrooms_needed;
+    
+                                        cityClass = cityEducation.classes_school_year[++o];
+                                    }
+
+                                }
                             } else {
                                 if(currentEducation.education_level_short_id < cityEducation.education_level_short_id) {
                                     currentLocation.education_level.splice(++m, 0, cityEducation);