diff --git a/releases/plg_vmshipment_rules_shipping_advanced_v2.0.zip b/releases/plg_vmshipment_rules_shipping_advanced_v2.0.zip
index 41e4dc7729a16aa1bd6dfb4e9526f4d93c36923a..31772ab87f29c38d539237ebb4a6a3f04b7a1207 100644
Binary files a/releases/plg_vmshipment_rules_shipping_advanced_v2.0.zip and b/releases/plg_vmshipment_rules_shipping_advanced_v2.0.zip differ
diff --git a/releases/plg_vmshipment_rules_shipping_v2.0.zip b/releases/plg_vmshipment_rules_shipping_v2.0.zip
index 83ec336faa2c9b2e7db00a3b9698b3e5f975ca93..7fbc943505fb1599946e4525b4d3ebc9d25f92fb 100644
Binary files a/releases/plg_vmshipment_rules_shipping_v2.0.zip and b/releases/plg_vmshipment_rules_shipping_v2.0.zip differ
diff --git a/rules_shipping_advanced.php b/rules_shipping_advanced.php
index 92b92bc17e198bbbb0b52e80dd05182e0ff78eb5..70210c3e19a1cf6f35c70ad7e5d2af7e98a2ee4d 100644
--- a/rules_shipping_advanced.php
+++ b/rules_shipping_advanced.php
@@ -71,8 +71,8 @@ class ShippingRule_Advanced extends ShippingRule {
 		"+"  => 50, "-"  => 50, 
 		"<"  => 40, "<=" => 40, ">"  => 40, ">=" => 40, "=>" => 40, "=<" => 40,
 		"==" => 40, "!=" => 40, "<>" => 40,
-		"&"  => 21,
-		" OR "  => 20,
+		"&&"  => 21, " AND " => 21, "AND" => 21,
+		" OR "  => 20, "OR" => 20,
 		"="  => 10,
 		
 		"("  =>  0, ")"  =>0 );
@@ -86,7 +86,7 @@ class ShippingRule_Advanced extends ShippingRule {
 		$str_re = '/("(?:\\"|[^"])*"|\'(?:\\\'|[^\'])*\')/';
 		$strings = preg_split($str_re, $expression, -1, PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY);
 		// Then split all other parts of the expression at the operators
-		$op_re = ':\s*( OR |<=|=>|>=|=>|<>|!=|==|<|=|>|\+|-|\*|/|%|\(|\)|\^)\s*:';
+		$op_re = ':\s*( OR |&&| AND |<=|=>|>=|=>|<>|!=|==|<|=|>|\+|-|\*|/|%|\(|\)|\^)\s*:';
 		$atoms = array();
 		foreach ($strings as $s) {
 			if (preg_match($str_re, $s)) {
@@ -155,7 +155,7 @@ class ShippingRule_Advanced extends ShippingRule {
 		$atoms = $this->tokenize_expression ($rulepart);
 		
 		// Any of these indicate a comparison and thus a condition:
-		$comparison_ops = array('<', '<=', '=<', '<>', '!=', '==', '>', '>=', '=>');
+		$comparison_ops = array('<', '<=', '=<', '<>', '!=', '==', '>', '>=', '=>', ' OR ', 'OR', 'AND', ' AND ', '&&');
 		$is_comparison = false;
 		$is_assignment = false;
 		
diff --git a/rules_shipping_base.php b/rules_shipping_base.php
index c42290ddc856306500c1981cc12ab8954441eabf..ca96df5cdfd720bd3461b5b9d35eb34f3aa72b22 100644
--- a/rules_shipping_base.php
+++ b/rules_shipping_base.php
@@ -633,6 +633,7 @@ class ShippingRule {
 			switch ($op) {
 				case 'OR':
 				case ' OR ':  foreach ($args as $a) { $res = ($res || $a); }; break;
+				case '&&':
 				case 'AND':
 				case ' AND ':  $res = true; foreach ($args as $a) { $res = ($res && $a); }; break;
 				case 'in': $needle = array_shift($args); $res = in_array($needle, $args); break;