diff --git a/~dev_rating/application/classes/Controller/Student/Subject.php b/~dev_rating/application/classes/Controller/Student/Subject.php
index 906ef03afd2cc678286de02dda4d5aed7e8b223d..18173029f1e8bdee9223bfb34eb03359330c1eac 100644
--- a/~dev_rating/application/classes/Controller/Student/Subject.php
+++ b/~dev_rating/application/classes/Controller/Student/Subject.php
@@ -14,6 +14,7 @@ class Controller_Student_Subject extends Controller_Environment_Student
             'Teachers'      => self::getTeachersListOf($discipline),
             'DisciplineMap' => $map['Modules'],
             'Submodules'    => $map['Submodules'],
+            'ExtraRate'     => $map['ExtraRate'],
             'Semester'      => Model_Semesters::load($discipline->SemesterID),
         ])->set_filename(static::STUDENT . 'subject');
     }
@@ -30,62 +31,45 @@ class Controller_Student_Subject extends Controller_Environment_Student
     }
 
     private static function generateDisciplineMapFrom(Database_Result $rates) {
-        $disMap = [];              # not sure, what it is about :(
+        $map = [];                 # not sure, what it is about :(
         $extraRate = 0;            # completely legacy code, baby
         $submodules = [];
         $modules = [];
 
         foreach ($rates as $row) {
+            $submodules[$row['SubmoduleID']] = [
+                'Title'   => $row['SubmoduleName'],
+                'MaxRate' => $row['MaxRate'],
+                'Rate'    => $row['Rate'],
+                'Date'    => $row['Date'],
+            ];
+            
             switch ($row['ModuleType']) {
                 case 'exam':
-                    $disMap['Exam'] = $row['SubmoduleID'];
-
-                    $submodules[$row['SubmoduleID']] = [
-                        'Rate'    => $row['Rate'],
-                        'MaxRate' => $row['MaxRate'],
-                        'Date'    => $row['Date'],
-                    ];
+                    $map['Exam'] = $row['SubmoduleID'];
                     break;
 
                 case 'bonus':
-                    $disMap['Bonus'] = $row['SubmoduleID'];
-
-                    $submodules[$row['SubmoduleID']] = [
-                        'Rate'        => $row['Rate'],
-                        'MaxRate'     => $row['MaxRate'],
-                        'Date'        => $row['Date'],
-                    ];
+                    $map['Bonus'] = $row['SubmoduleID'];
                     break;
 
                 case 'extra':
-                    $submodules[$row['SubmoduleID']] = [
-                        'Rate'        => $row['Rate'],
-                        'MaxRate'     => $row['MaxRate'],
-                        'Date'        => $row['Date'],
-                    ];
                     break;
 
                 default:
                     $module =& $modules[$row['ModuleID']];
                     $module['Title'] = $row['ModuleName'];
                     $module['Submodules'][] = $row['SubmoduleID'];
-
-                    $submodules[$row['SubmoduleID']] = [
-                        'Date'        => $row['Date'],
-                        'Title'       => $row['SubmoduleName'],
-                        'Rate'        => $row['Rate'],
-                        'MaxRate'     => $row['MaxRate'],
-                    ];
             }
         }
 
         foreach ($submodules as &$s) {
-            if ($s['ModuleType'] === 'Extra')
+            if ($s['ModuleType'] === 'extra')
                 $extraRate += $s['Rate'];
         }
 
-        $disMap['Modules'] = $modules;
+        $map['Modules'] = $modules;
 
-        return ['Modules' => $disMap, 'Submodules' => $submodules, 'ExtraRate' => $extraRate];
+        return ['Modules' => $map, 'Submodules' => $submodules, 'ExtraRate' => $extraRate];
     }
 }
diff --git a/~dev_rating/application/views/student/subject.twig b/~dev_rating/application/views/student/subject.twig
index 05d4440928cf570d92e2f8e6b3eace72d3971ad1..ca507f3faeac43e8f974bbb0eb49629be78ef9e0 100644
--- a/~dev_rating/application/views/student/subject.twig
+++ b/~dev_rating/application/views/student/subject.twig
@@ -126,17 +126,17 @@
     {% if Discipline.Type == 'exam' %}
     <h3 class="blockTitle">Допуск к экзамену</h3>
     <div class="blockMargin">
-        {% set Admission = 38 - (SemesterRate + DisciplineMap.ExtraRate) %}
+        {% set Admission = 38 - (SemesterRate + ExtraRate) %}
         {% if Admission > 0 %}
             Для допуска к экзамену Вам необходимо получить еще {{ Admission }} {{ Rus.NumEnding(Admission, ['балл', 'балла', 'баллов']) }}.
         {% else %}
             Поздравляем, заработанных Вами баллов достаточно для получения допуска к экзамену!
         {% endif %}
-        {% if DisciplineMap.ExtraRate %}
+        {% if ExtraRate %}
             <div class="blockMargin">
                 <div class="submoduleBlock topBorder">
                     <div class="submoduleTitle">Добор баллов</div>
-                    <div class="submoduleRate">{{ DisciplineMap.ExtraRate }}</div>
+                    <div class="submoduleRate">{{ ExtraRate }}</div>
                     <div class="submodulePercent">&nbsp;</div>
                     <div class="submoduleDate">—</div>
                 </div>
@@ -145,7 +145,7 @@
     </div>
 
     <div class="Middle totalRate">
-        Промежуточный итог: {{ SemesterRate + DisciplineMap.ExtraRate }} / {{ SemesterMaxRate }}
+        Промежуточный итог: {{ SemesterRate + ExtraRate }} / {{ SemesterMaxRate }}
     </div>
         
     {% set Bonus = Submodules[DisciplineMap.Bonus] %}
@@ -187,28 +187,28 @@
     </div>
 
     <div class="Final totalRate">
-        {% set Rating = SemesterRate + DisciplineMap.ExtraRate + Bonus.Rate + Exam.Rate %}
+        {% set Rating = SemesterRate + ExtraRate + Bonus.Rate + Exam.Rate %}
         Итоговый рейтинг: {{ min(Rating, 100) }} / 100
     </div>
 
     {% elseif Discipline.Type == 'credit' %}
         <h3 class="blockTitle">Зачет</h3>
         <div class="blockMargin">
-            {% set Admission = 60 - (SemesterRate + DisciplineMap.ExtraRate) %}
+            {% set Admission = 60 - (SemesterRate + ExtraRate) %}
             {% if Admission > 0 %}
                 Для получения зачета необходимо набрать ещё {{ Admission }} {{ Rus.NumEnding(Admission, ['балл', 'балла', 'баллов']) }}.
             {% else %}
                 Поздравляем, Вы получили зачет по курсу &laquo;{{ Discipline.SubjectName|default('—') }}&raquo;!
             {% endif %}
-            {% if DisciplineMap.ExtraRate or not Admission or Bonus is not empty %}
+            {% if ExtraRate or not Admission or Bonus is not empty %}
             <div class="tableTitle Extra">
                 Зачет по курсу &laquo;{{ Discipline.SubjectName|default('—') }}&raquo;
             </div>
-            {% if DisciplineMap.ExtraRate or not Admission %}
+            {% if ExtraRate or not Admission %}
                 <div class="blockMargin">
                     <div class="submoduleBlock topBorder">
                         <div class="submoduleTitle">Добор баллов</div>
-                        <div class="submoduleRate">{{ DisciplineMap.ExtraRate }}</div>
+                        <div class="submoduleRate">{{ +ExtraRate }}</div>
                         <div class="submodulePercent">&nbsp;</div>
                         <div class="submoduleDate">—</div>
                     </div>
@@ -232,7 +232,7 @@
         </div>
 
         <div class="Final totalRate">
-            {% set Rating = SemesterRate + DisciplineMap.ExtraRate + Bonus.Rate %}
+            {% set Rating = SemesterRate + ExtraRate + Bonus.Rate %}
             Итоговый рейтинг: {{ min(Rating, 100) }} / 100
         </div>
     {% endif %}