diff --git a/commerce_discount.rules.inc b/commerce_discount.rules.inc
index e5da997..432c353 100644
--- a/commerce_discount.rules.inc
+++ b/commerce_discount.rules.inc
@@ -178,14 +178,10 @@ function commerce_discount_fixed_amount(EntityDrupalWrapper $wrapper, $discount_
  */
 function commerce_discount_percentage(EntityDrupalWrapper $wrapper, $discount_name) {
   $discount_wrapper = entity_metadata_wrapper('commerce_discount', $discount_name);
-  $rate = $discount_wrapper->commerce_discount_offer->commerce_percentage->value();
+  $rate = $discount_wrapper->commerce_discount_offer->commerce_percentage->value() / 100;
   // Get the line item types to apply the discount to.
   $line_item_types = variable_get('commerce_discount_line_item_types', array('product' => 'product'));
 
-  if ($rate > 1) {
-    $rate = $rate / 100;
-  }
-
   switch ($wrapper->type()) {
     case 'commerce_order':
 
diff --git a/includes/commerce_discount.admin.inc b/includes/commerce_discount.admin.inc
index 6389069..713da76 100644
--- a/includes/commerce_discount.admin.inc
+++ b/includes/commerce_discount.admin.inc
@@ -278,6 +278,12 @@ function commerce_discount_form_validate($form, &$form_state) {
   if (!empty($form_state['values']['name'])) {
     form_set_value($form['name'], 'discount_' . $form_state['values']['name'], $form_state);
   }
+  // TODO : do we need more form validation?
+  $percentage = $form_state['values']['commerce_discount_fields']['commerce_discount_offer']['und']['form']['commerce_percentage']['und'][0]['value'];
+  if ($percentage <= 0) {
+    // TODO : form_set_error does not highlight the percentage box (wrong element name?)
+    form_set_error('commerce_percentage', t('Percentage should be a positive number, excluding zero!'));
+  }
 }
 
 /**
