diff --git a/smradius/attributes.pm b/smradius/attributes.pm
index 71995140e4b1e397448094542d037c88c6471fa3..31ccde8fb8e5101ea73fad1293f7d631534c6b97 100644
--- a/smradius/attributes.pm
+++ b/smradius/attributes.pm
@@ -342,69 +342,64 @@ sub getReplyAttribute
 			$attribute->{'Name'}."' ".$attribute->{'Operator'}." '".join("','",@attrValues)."'");
 	
 
-	# Loop with all values
-	foreach my $attrVal (@attrValues) { 	
-		# Operator: =
-		#
-		# Use: Attribute = Value
-		# Not allowed as a check item for RADIUS protocol attributes. It is allowed for server
-		# configuration attributes (Auth-Type, etc), and sets the value of on attribute,
-		# only if there is no other item of the same attribute.
-		#
-		# As a reply item, it means "add the item to the reply list, but only if there is
-		# no other item of the same attribute.
-	
-		if ($attribute->{'Operator'} eq '=') {
-			if (!defined($attrVal)) {
-				$matched = 1;
-			}
+	# Operator: =
+	#
+	# Use: Attribute = Value
+	# Not allowed as a check item for RADIUS protocol attributes. It is allowed for server
+	# configuration attributes (Auth-Type, etc), and sets the value of on attribute,
+	# only if there is no other item of the same attribute.
+	#
+	# As a reply item, it means "add the item to the reply list, but only if there is
+	# no other item of the same attribute.
+	
+	if ($attribute->{'Operator'} eq '=') {
+		# If item does not exist
+		if (!defined($attributes->{$attribute->{'Name'}})) {
+			# Then add
+			$server->log(LOG_DEBUG,"[ATTRIBUTES] - Attribute '".$attribute->{'Name'}.
+					"' no value exists, setting value to '".join("','",@attrValues)."'");
+			@{$attributes->{$attribute->{'Name'}}} = @attrValues;
+		}
+
 	
-		# Operator: :=
-		#
-		# Use: Attribute := Value
-		# Always matches as a check item, and replaces in the configuration items any attribute of the same name. 
-		# If no attribute of that name appears in the request, then this attribute is added.
-		#
-		# As a reply item, it has an itendtical meaning, but for the reply items, instead of the request items.
+	# Operator: :=
+	#
+	# Use: Attribute := Value
+	# Always matches as a check item, and replaces in the configuration items any attribute of the same name. 
+	# If no attribute of that name appears in the request, then this attribute is added.
+	#
+	# As a reply item, it has an itendtical meaning, but for the reply items, instead of the request items.
 	
-		} elsif ($attribute->{'Operator'} eq ':=') {
-			# Add attribute if attribute appears
-			if (!defined($attrVal)) {
-				$matched = 1;
-			}
+	} elsif ($attribute->{'Operator'} eq ':=') {
+		# Overwrite
+		$server->log(LOG_DEBUG,"[ATTRIBUTES] - Attribute '".$attribute->{'Name'}.
+					"' setting attribute value to '".join("','",@attrValues)."'");
+		@{$attributes->{$attribute->{'Name'}}} = @attrValues;
+
 	
-		# Operator: +=
-		#
-		# Use: Attribute += Value
-		# Always matches as a check item, and adds the current
-		# attribute with value to the list of configuration items.
-		#
-		# As a reply item, it has an itendtical meaning, but the
-		# attribute is added to the reply items.
+	# Operator: +=
+	#
+	# Use: Attribute += Value
+	# Always matches as a check item, and adds the current
+	# attribute with value to the list of configuration items.
+	#
+	# As a reply item, it has an itendtical meaning, but the
+	# attribute is added to the reply items.
 	
-		} elsif ($attribute->{'Operator'} eq '+=') {
-			$matched = 1;
-		
-		# Attributes that are not defined
-		} else {
-			# Ignore and b0rk out
-			$matched = 2;
-			last;
-		}
-	}
-
-	# Some debugging info	
-	if ($matched == 1) {
-		$server->log(LOG_DEBUG,"[ATTRIBUTES] - Attribute '".$attribute->{'Name'}."' matched");
+	} elsif ($attribute->{'Operator'} eq '+=') {
+		# Then add
+		$server->log(LOG_DEBUG,"[ATTRIBUTES] - Attribute '".$attribute->{'Name'}.
+				"' appending values '".join("','",@attrValues)."'");
 		push(@{$attributes->{$attribute->{'Name'}}},@attrValues);
-	} elsif ($matched == 2) {
-		$server->log(LOG_DEBUG,"[ATTRIBUTES] - Attribute '".$attribute->{'Name'}."' ignored");
+	
+	# Attributes that are not defined
 	} else {
-		$server->log(LOG_DEBUG,"[ATTRIBUTES] - Attribute '".$attribute->{'Name'}."' not matched");
+		# Ignore and b0rk out
+		$server->log(LOG_NOTICE,"[ATTRIBUTES] - Attribute '".$attribute->{'Name'}."' ignored, invalid operator?");
+		last;
 	}
 
-	return $matched;
-
+	return;
 }