diff --git a/grade/edit/tree/category.php b/grade/edit/tree/category.php
index f7db0de..78153b8 100644
--- a/grade/edit/tree/category.php
+++ b/grade/edit/tree/category.php
@@ -119,6 +119,19 @@ if ($mform->is_cancelled()) {
         $itemdata->aggregationcoef = 0;
     }
 
+    if (!isset($itemdata->gradepass) || $itemdata->gradepass == '') {
+        $itemdata->gradepass = 0;
+    }
+
+    if (!isset($itemdata->grademax) || $itemdata->grademax == '') {
+        $itemdata->grademax = 0;
+    }
+    
+    if (!isset($itemdata->grademin) || $itemdata->grademin == '') {
+        $itemdata->grademin = 0;
+    }
+
+
     $hidden      = empty($itemdata->hidden) ? 0: $itemdata->hidden;
     $hiddenuntil = empty($itemdata->hiddenuntil) ? 0: $itemdata->hiddenuntil;
     unset($itemdata->hidden);
@@ -146,16 +159,16 @@ if ($mform->is_cancelled()) {
     if (empty($grade_item->id)) {
         $grade_item->id = $grade_item_copy->id;
     }
-    if (empty($grade_item->grademax)) {
+    if (empty($grade_item->grademax) && $grade_item->grademax != '0') {
         $grade_item->grademax = $grade_item_copy->grademax;
     }
-    if (empty($grade_item->grademin)) {
+    if (empty($grade_item->grademin) && $grade_item->grademin != '0') {
         $grade_item->grademin = $grade_item_copy->grademin;
     }
-    if (empty($grade_item->gradepass)) {
+    if (empty($grade_item->gradepass) && $grade_item->gradepass != '0') {
         $grade_item->gradepass = $grade_item_copy->gradepass;
     }
-    if (empty($grade_item->aggregationcoef)) {
+    if (empty($grade_item->aggregationcoef) && $grade_item->aggregationcoef != '0') {
         $grade_item->aggregationcoef = $grade_item_copy->aggregationcoef;
     }
 
diff --git a/grade/edit/tree/category_form.php b/grade/edit/tree/category_form.php
index bded7bd..ac89c55 100644
--- a/grade/edit/tree/category_form.php
+++ b/grade/edit/tree/category_form.php
@@ -466,8 +466,9 @@ class edit_category_form extends moodleform {
         }
 
         if (array_key_exists('grade_item_grademin', $data) and array_key_exists('grade_item_grademax', $data)) {
-            if ($data['grade_item_grademax'] == $data['grade_item_grademin'] or
-                $data['grade_item_grademax'] < $data['grade_item_grademin']) {
+            if (($data['grade_item_grademax'] != 0 OR $data['grade_item_grademin'] != 0) AND
+                ($data['grade_item_grademax'] == $data['grade_item_grademin'] or
+                 $data['grade_item_grademax'] < $data['grade_item_grademin'])) {
                 $errors['grade_item_grademin'] = get_string('incorrectminmax', 'grades');
                 $errors['grade_item_grademax'] = get_string('incorrectminmax', 'grades');
             }
