diff --git a/smradius/modules/features/mod_feature_capping.pm b/smradius/modules/features/mod_feature_capping.pm
index b956d299e7b5e3fddad55fea83938cde9b8ce57e..4e0394dccf2ce1c8fcef2ce815034cc7e593de5e 100644
--- a/smradius/modules/features/mod_feature_capping.pm
+++ b/smradius/modules/features/mod_feature_capping.pm
@@ -24,7 +24,6 @@ use warnings;
 use smradius::constants;
 use smradius::logging;
 use smradius::util;
-use Date::Parse;
 
 # Exporter stuff
 require Exporter;
@@ -93,8 +92,10 @@ sub post_auth_hook
 		if (defined($user->{'Attributes'}->{$UPTIME_LIMIT_KEY}->{':='})) {
 
 			# Check for valid attribute value
-			if ($user->{'Attributes'}->{$UPTIME_LIMIT_KEY}->{':='}->{'Value'} =~ /^[0-9]+$/) {
-				$uptimeLimit = $user->{'Attributes'}->{$UPTIME_LIMIT_KEY};
+			if (defined($user->{'Attributes'}->{$UPTIME_LIMIT_KEY}->{':='}->{'Value'}) &&
+					$user->{'Attributes'}->{$UPTIME_LIMIT_KEY}->{':='}->{'Value'} =~ /^\d+$/) {
+
+				$uptimeLimit = $user->{'Attributes'}->{$UPTIME_LIMIT_KEY}->{':='}->{'Value'};
 			} else {
 				$server->log(LOG_NOTICE,"[MOD_FEATURE_CAPPING] '".$user->{'Attributes'}->{$UPTIME_LIMIT_KEY}->{':='}->{'Value'}.
 						"' is NOT a numeric value");
@@ -115,8 +116,10 @@ sub post_auth_hook
 		if (defined($user->{'Attributes'}->{$TRAFFIC_LIMIT_KEY}->{':='})) {
 
 			# Check for valid attribute value
-			if ($user->{'Attributes'}->{$TRAFFIC_LIMIT_KEY}->{':='}->{'Value'} =~ /^[0-9]+$/) {
-				$trafficLimit = $user->{'Attributes'}->{$TRAFFIC_LIMIT_KEY};
+			if (defined($user->{'Attributes'}->{$TRAFFIC_LIMIT_KEY}->{':='}->{'Value'}) &&
+					$user->{'Attributes'}->{$TRAFFIC_LIMIT_KEY}->{':='}->{'Value'} =~ /^\d+$/) {
+
+				$trafficLimit = $user->{'Attributes'}->{$TRAFFIC_LIMIT_KEY}->{':='}->{'Value'};
 			} else {
 				$server->log(LOG_NOTICE,"[MOD_FEATURE_CAPPING] '".$user->{'Attributes'}->{$TRAFFIC_LIMIT_KEY}->{':='}->{'Value'}.
 						"' is NOT a numeric value");
@@ -165,7 +168,7 @@ sub post_auth_hook
 		# Check if there is a value
 		if (defined($user->{'ConfigAttributes'}->{$TIME_TOPUPS_KEY}->[0])) {
 			# Check if the value is of a valid type
-			if ($user->{'ConfigAttributes'}->{$TIME_TOPUPS_KEY}->[0] =~ /^[0-9]+$/) {
+			if ($user->{'ConfigAttributes'}->{$TIME_TOPUPS_KEY}->[0] =~ /^\d+$/) {
 				$uptimeTopup = $user->{'ConfigAttributes'}->{$TIME_TOPUPS_KEY}->[0];
 			} else {
 				$server->log(LOG_NOTICE,"[MOD_FEATURE_CAPPING] '".$user->{'ConfigAttributes'}->{$TIME_TOPUPS_KEY}->[0].
@@ -183,7 +186,7 @@ sub post_auth_hook
 		# Check for value
 		if (defined($user->{'ConfigAttributes'}->{$TRAFFIC_TOPUPS_KEY}->[0])) {
 			# Is it a number?
-			if ($user->{'ConfigAttributes'}->{$TRAFFIC_TOPUPS_KEY}->[0] =~ /^[0-9]+$/) {
+			if ($user->{'ConfigAttributes'}->{$TRAFFIC_TOPUPS_KEY}->[0] =~ /^\d+$/) {
 				$trafficTopup = $user->{'ConfigAttributes'}->{$TRAFFIC_TOPUPS_KEY}->[0];
 			} else {
 				$server->log(LOG_NOTICE,"[MOD_FEATURE_CAPPING] '".$user->{'ConfigAttributes'}->{$TRAFFIC_TOPUPS_KEY}->[0].
@@ -202,28 +205,28 @@ sub post_auth_hook
 	# Uptime..
 	my $alteredUptimeLimit = 0;
 	if ($uptimeTopup > 0) {
-		if (defined($uptimeLimit->{':='}->{'Value'})) {
-			$alteredUptimeLimit = $uptimeLimit->{':='}->{'Value'} + $uptimeTopup;
+		if (defined($uptimeLimit)) {
+			$alteredUptimeLimit = $uptimeLimit + $uptimeTopup;
 		} else {
 			$alteredUptimeLimit = $uptimeTopup;
 		}
 	} else {
-		if (defined($uptimeLimit->{':='}->{'Value'})) {
-			$alteredUptimeLimit = $uptimeLimit->{':='}->{'Value'};
+		if (defined($uptimeLimit)) {
+			$alteredUptimeLimit = $uptimeLimit;
 		}
 	}
 
 	# Traffic..
 	my $alteredTrafficLimit = 0;
 	if ($trafficTopup > 0) {
-		if (defined($trafficLimit->{':='}->{'Value'})) {
-			$alteredTrafficLimit = $trafficLimit->{':='}->{'Value'} + $trafficTopup;
+		if (defined($trafficLimit)) {
+			$alteredTrafficLimit = $trafficLimit + $trafficTopup;
 		} else {
 			$alteredTrafficLimit = $trafficTopup;
 		}
 	} else {
-		if (defined($trafficLimit->{':='}->{'Value'})) {
-			$alteredTrafficLimit = $trafficLimit->{':='}->{'Value'};
+		if (defined($trafficLimit)) {
+			$alteredTrafficLimit = $trafficLimit;
 		}
 	}
 
@@ -234,13 +237,13 @@ sub post_auth_hook
 
 
 	# Uptime..
-	if (!(defined($uptimeLimit->{':='}->{'Value'}) && $uptimeLimit->{':='}->{'Value'} == 0)) {
-		if (!defined($uptimeLimit->{':='}->{'Value'})) {
+	if (!(defined($uptimeLimit) && $uptimeLimit == 0)) {
+		if (!defined($uptimeLimit)) {
 			$server->log(LOG_DEBUG,"[MOD_FEATURE_CAPPING] Uptime => Usage total: ".$accountingUsage->{'TotalSessionTime'}.
 					"Min (Cap: Prepaid, Topups: ".$uptimeTopup."Min)");
 		} else {
 			$server->log(LOG_DEBUG,"[MOD_FEATURE_CAPPING] Uptime => Usage total: ".$accountingUsage->{'TotalSessionTime'}.
-					"Min (Cap: ".$uptimeLimit->{':='}->{'Value'}."Min, Topups: ".$uptimeTopup."Min)");
+					"Min (Cap: ".$uptimeLimit."Min, Topups: ".$uptimeTopup."Min)");
 		}
 	} else {
 		$server->log(LOG_DEBUG,"[MOD_FEATURE_CAPPING] Uptime => Usage total: ".$accountingUsage->{'TotalSessionTime'}.
@@ -248,13 +251,13 @@ sub post_auth_hook
 	}
 
 	# Traffic..
-	if (!(defined($trafficLimit->{':='}->{'Value'}) && $trafficLimit->{':='}->{'Value'} == 0)) {
-		if (!defined($trafficLimit->{':='}->{'Value'})) {
+	if (!(defined($trafficLimit) && $trafficLimit == 0)) {
+		if (!defined($trafficLimit)) {
 			$server->log(LOG_DEBUG,"[MOD_FEATURE_CAPPING] Bandwidth => Usage total: ".$accountingUsage->{'TotalDataUsage'}.
 					"Mb (Cap: Prepaid, Topups: ".$trafficTopup."Mb)");
 		} else {
 			$server->log(LOG_DEBUG,"[MOD_FEATURE_CAPPING] Bandwidth => Usage total: ".$accountingUsage->{'TotalDataUsage'}.
-					"Mb (Cap: ".$trafficLimit->{':='}->{'Value'}."Mb, Topups: ".$trafficTopup."Mb)");
+					"Mb (Cap: ".$trafficLimit."Mb, Topups: ".$trafficTopup."Mb)");
 		}
 	} else {
 		$server->log(LOG_DEBUG,"[MOD_FEATURE_CAPPING] Bandwidth => Usage total: ".$accountingUsage->{'TotalDataUsage'}.
@@ -268,7 +271,7 @@ sub post_auth_hook
 
 
 	# Uptime..
-	if (!(defined($uptimeLimit->{':='}->{'Value'}) && $uptimeLimit->{':='}->{'Value'} == 0)) {
+	if (!(defined($uptimeLimit) && $uptimeLimit == 0)) {
 
 		# Capped
 		if ($accountingUsage->{'TotalSessionTime'} >= $alteredUptimeLimit) {
@@ -279,7 +282,7 @@ sub post_auth_hook
 	}
 
 	# Traffic
-	if (!(defined($trafficLimit->{':='}->{'Value'}) && $trafficLimit->{':='}->{'Value'} == 0)) {
+	if (!(defined($trafficLimit) && $trafficLimit == 0)) {
 
 		# Capped
 		if ($accountingUsage->{'TotalDataUsage'} >= $alteredTrafficLimit) {
@@ -326,8 +329,10 @@ sub post_acct_hook
 		if (defined($user->{'Attributes'}->{$UPTIME_LIMIT_KEY}->{':='})) {
 
 			# Check for valid attribute value
-			if ($user->{'Attributes'}->{$UPTIME_LIMIT_KEY}->{':='}->{'Value'} =~ /^[0-9]+$/) {
-				$uptimeLimit = $user->{'Attributes'}->{$UPTIME_LIMIT_KEY};
+			if (defined($user->{'Attributes'}->{$UPTIME_LIMIT_KEY}->{':='}->{'Value'}) &&
+					$user->{'Attributes'}->{$UPTIME_LIMIT_KEY}->{':='}->{'Value'} =~ /^\d+$/) {
+
+				$uptimeLimit = $user->{'Attributes'}->{$UPTIME_LIMIT_KEY}->{':='}->{'Value'};
 			} else {
 				$server->log(LOG_NOTICE,"[MOD_FEATURE_CAPPING] '".$user->{'Attributes'}->{$UPTIME_LIMIT_KEY}->{':='}->{'Value'}.
 						"' is NOT a numeric value");
@@ -348,8 +353,10 @@ sub post_acct_hook
 		if (defined($user->{'Attributes'}->{$TRAFFIC_LIMIT_KEY}->{':='})) {
 
 			# Check for valid attribute value
-			if ($user->{'Attributes'}->{$TRAFFIC_LIMIT_KEY}->{':='}->{'Value'} =~ /^[0-9]+$/) {
-				$trafficLimit = $user->{'Attributes'}->{$TRAFFIC_LIMIT_KEY};
+			if (defined($user->{'Attributes'}->{$TRAFFIC_LIMIT_KEY}->{':='}->{'Value'}) &&
+					$user->{'Attributes'}->{$TRAFFIC_LIMIT_KEY}->{':='}->{'Value'} =~ /^\d+$/) {
+
+				$trafficLimit = $user->{'Attributes'}->{$TRAFFIC_LIMIT_KEY}->{':='}->{'Value'};
 			} else {
 				$server->log(LOG_NOTICE,"[MOD_FEATURE_CAPPING] '".$user->{'Attributes'}->{$TRAFFIC_LIMIT_KEY}->{':='}->{'Value'}.
 						"' is NOT a numeric value");
@@ -398,7 +405,7 @@ sub post_acct_hook
 		# Check if there is a value
 		if (defined($user->{'ConfigAttributes'}->{$TIME_TOPUPS_KEY}->[0])) {
 			# Check if the value is of a valid type
-			if ($user->{'ConfigAttributes'}->{$TIME_TOPUPS_KEY}->[0] =~ /^[0-9]+$/) {
+			if ($user->{'ConfigAttributes'}->{$TIME_TOPUPS_KEY}->[0] =~ /^\d+$/) {
 				$uptimeTopup = $user->{'ConfigAttributes'}->{$TIME_TOPUPS_KEY}->[0];
 			} else {
 				$server->log(LOG_NOTICE,"[MOD_FEATURE_CAPPING] '".$user->{'ConfigAttributes'}->{$TIME_TOPUPS_KEY}->[0].
@@ -416,7 +423,7 @@ sub post_acct_hook
 		# Check for value
 		if (defined($user->{'ConfigAttributes'}->{$TRAFFIC_TOPUPS_KEY}->[0])) {
 			# Is it a number?
-			if ($user->{'ConfigAttributes'}->{$TRAFFIC_TOPUPS_KEY}->[0] =~ /^[0-9]+$/) {
+			if ($user->{'ConfigAttributes'}->{$TRAFFIC_TOPUPS_KEY}->[0] =~ /^\d+$/) {
 				$trafficTopup = $user->{'ConfigAttributes'}->{$TRAFFIC_TOPUPS_KEY}->[0];
 			} else {
 				$server->log(LOG_NOTICE,"[MOD_FEATURE_CAPPING] '".$user->{'ConfigAttributes'}->{$TRAFFIC_TOPUPS_KEY}->[0].
@@ -435,28 +442,28 @@ sub post_acct_hook
 	# Uptime..
 	my $alteredUptimeLimit = 0;
 	if ($uptimeTopup > 0) {
-		if (defined($uptimeLimit->{':='}->{'Value'})) {
-			$alteredUptimeLimit = $uptimeLimit->{':='}->{'Value'} + $uptimeTopup;
+		if (defined($uptimeLimit)) {
+			$alteredUptimeLimit = $uptimeLimit + $uptimeTopup;
 		} else {
 			$alteredUptimeLimit = $uptimeTopup;
 		}
 	} else {
-		if (defined($uptimeLimit->{':='}->{'Value'})) {
-			$alteredUptimeLimit = $uptimeLimit->{':='}->{'Value'};
+		if (defined($uptimeLimit)) {
+			$alteredUptimeLimit = $uptimeLimit;
 		}
 	}
 
 	# Traffic..
 	my $alteredTrafficLimit = 0;
 	if ($trafficTopup > 0) {
-		if (defined($trafficLimit->{':='}->{'Value'})) {
-			$alteredTrafficLimit = $trafficLimit->{':='}->{'Value'} + $trafficTopup;
+		if (defined($trafficLimit)) {
+			$alteredTrafficLimit = $trafficLimit + $trafficTopup;
 		} else {
 			$alteredTrafficLimit = $trafficTopup;
 		}
 	} else {
-		if (defined($trafficLimit->{':='}->{'Value'})) {
-			$alteredTrafficLimit = $trafficLimit->{':='}->{'Value'};
+		if (defined($trafficLimit)) {
+			$alteredTrafficLimit = $trafficLimit;
 		}
 	}
 
@@ -467,13 +474,13 @@ sub post_acct_hook
 
 
 	# Uptime..
-	if (!(defined($uptimeLimit->{':='}->{'Value'}) && $uptimeLimit->{':='}->{'Value'} == 0)) {
-		if (!defined($uptimeLimit->{':='}->{'Value'})) {
+	if (!(defined($uptimeLimit) && $uptimeLimit == 0)) {
+		if (!defined($uptimeLimit)) {
 			$server->log(LOG_DEBUG,"[MOD_FEATURE_CAPPING] Uptime => Usage total: ".$accountingUsage->{'TotalSessionTime'}.
 					"Min (Cap: Prepaid, Topups: ".$uptimeTopup."Min)");
 		} else {
 			$server->log(LOG_DEBUG,"[MOD_FEATURE_CAPPING] Uptime => Usage total: ".$accountingUsage->{'TotalSessionTime'}.
-					"Min (Cap: ".$uptimeLimit->{':='}->{'Value'}."Min, Topups: ".$uptimeTopup."Min)");
+					"Min (Cap: ".$uptimeLimit."Min, Topups: ".$uptimeTopup."Min)");
 		}
 	} else {
 		$server->log(LOG_DEBUG,"[MOD_FEATURE_CAPPING] Uptime => Usage total: ".$accountingUsage->{'TotalSessionTime'}.
@@ -481,13 +488,13 @@ sub post_acct_hook
 	}
 
 	# Traffic..
-	if (!(defined($trafficLimit->{':='}->{'Value'}) && $trafficLimit->{':='}->{'Value'} == 0)) {
-		if (!defined($trafficLimit->{':='}->{'Value'})) {
+	if (!(defined($trafficLimit) && $trafficLimit == 0)) {
+		if (!defined($trafficLimit)) {
 			$server->log(LOG_DEBUG,"[MOD_FEATURE_CAPPING] Bandwidth => Usage total: ".$accountingUsage->{'TotalDataUsage'}.
 					"Mb (Cap: Prepaid, Topups: ".$trafficTopup."Mb)");
 		} else {
 			$server->log(LOG_DEBUG,"[MOD_FEATURE_CAPPING] Bandwidth => Usage total: ".$accountingUsage->{'TotalDataUsage'}.
-					"Mb (Cap: ".$trafficLimit->{':='}->{'Value'}."Mb, Topups: ".$trafficTopup."Mb)");
+					"Mb (Cap: ".$trafficLimit."Mb, Topups: ".$trafficTopup."Mb)");
 		}
 	} else {
 		$server->log(LOG_DEBUG,"[MOD_FEATURE_CAPPING] Bandwidth => Usage total: ".$accountingUsage->{'TotalDataUsage'}.
@@ -501,7 +508,7 @@ sub post_acct_hook
 
 
 	# Uptime..
-	if (!(defined($uptimeLimit->{':='}->{'Value'}) && $uptimeLimit->{':='}->{'Value'} == 0)) {
+	if (!(defined($uptimeLimit) && $uptimeLimit == 0)) {
 
 		# Capped
 		if ($accountingUsage->{'TotalSessionTime'} >= $alteredUptimeLimit) {
@@ -512,7 +519,7 @@ sub post_acct_hook
 	}
 
 	# Traffic
-	if (!(defined($trafficLimit->{':='}->{'Value'}) && $trafficLimit->{':='}->{'Value'} == 0)) {
+	if (!(defined($trafficLimit) && $trafficLimit == 0)) {
 
 		# Capped
 		if ($accountingUsage->{'TotalDataUsage'} >= $alteredTrafficLimit) {