DelResult(&result);
 
     if (*value < min) {
-       error("bad '%s' value '%d' in %s, minimum is %d", key, *value, cfg_source(), min);
+       error("bad '%s.%s' value '%d' in %s, minimum is %d", section, key, *value, cfg_source(), min);
        *value = min;
        return -1;
     }
 
     if (max > min && max != -1 && *value > max) {
-       error("bad '%s' value '%d' in %s, maximum is %d", key, *value, cfg_source(), max);
+       error("bad '%s.%s' value '%d' in %s, maximum is %d", section, key, *value, cfg_source(), max);
        *value = max;
        return -1;
     }
 
        return 0.0;
     }
 
+    if (result->type == 0) {
+       return 0.0;
+    }
+
     if (result->type & R_NUMBER) {
        return result->number;
     }
        return NULL;
     }
 
+    if (result->type == 0) {
+       return NULL;
+    }
+
     if (result->type & R_STRING) {
        return result->string;
     }