diff --git a/releases/plg_vmshipment_rules_shipping_advanced_v2.4.7.zip b/releases/plg_vmshipment_rules_shipping_advanced_v2.4.7.zip
index ad1d19a82fcffcff3aa48ffd33dd2eda88ffe168..1fdea656fc9cb0d90ee907aa0fe1c9b9031cd22c 100644
Binary files a/releases/plg_vmshipment_rules_shipping_advanced_v2.4.7.zip and b/releases/plg_vmshipment_rules_shipping_advanced_v2.4.7.zip differ
diff --git a/releases/plg_vmshipment_rules_shipping_v2.4.7.zip b/releases/plg_vmshipment_rules_shipping_v2.4.7.zip
index 9e401187ba2f73255ef73ef27374677333e6f72f..e31f1ff5616257c26e58dd990f7f65eae72d7fd8 100644
Binary files a/releases/plg_vmshipment_rules_shipping_v2.4.7.zip and b/releases/plg_vmshipment_rules_shipping_v2.4.7.zip differ
diff --git a/rules_shipping_advanced.php b/rules_shipping_advanced.php
index 293296ba687d40338e6f7bda5be420a2916bf886..a3da1649a3f989b4f5bc04d64177e39a14ba9b24 100644
--- a/rules_shipping_advanced.php
+++ b/rules_shipping_advanced.php
@@ -42,7 +42,9 @@ class plgVmShipmentRules_Shipping_Advanced extends plgVmShipmentRules_Shipping_B
 	 */
 	protected function addCustomCartValues (VirtueMartCart $cart, $cart_prices, &$values) {
 		$values['coupon'] = $cart->couponCode;
-		$zip=strtoupper($values['zip']);
+		if ($values['zip']) {
+			$zip=strtoupper($values['zip']);
+		}
 
 		// Postal code Check for UK postal codes: Use regexp to determine if ZIP structure matches and also to extract the parts.
 		// Also handle UK overseas areas/islands that use four-letter outward codes rather than "A{1,2}0{1,2}A{0,1} 0AA"
diff --git a/rules_shipping_base.php b/rules_shipping_base.php
index 61148b3618fd2cbeba1bb2fd89ac22f8c8dc9c13..d8a264d9c1d410c5b1c62369d1192d3d885e508f 100644
--- a/rules_shipping_base.php
+++ b/rules_shipping_base.php
@@ -755,9 +755,16 @@ class ShippingRule {
 				case "-":  $res = ($args[0] -  $args[1]); break;
 				case "*":  $res = ($args[0] *  $args[1]); break;
 				case "/":  $res = ($args[0] /  $args[1]); break;
-				case "%":  $res = ($args[0] %  $args[1]); break;
+				case "%":  $res = (fmod($args[0],  $args[1])); break;
 				case "^":  $res = ($args[0] ^  $args[1]); break;
 				
+				# TODO: Document these functions:
+				case "round": $res = round($args[0]); break;
+				case "ceil": $res = ceil($args[0]); break;
+				case "floor": $res = floor($args[0]); break;
+				case "max": $res = max($args); break;
+				case "min": $res = min($args); break;
+				
 				default:   $res = false;
 			}