diff --git a/xaal.go b/xaal.go
index e0d34d4713096c726e750a838a73a03fd17a1490..6088e193ea2f368cd9a7f1dadbe6601a832405df 100644
--- a/xaal.go
+++ b/xaal.go
@@ -135,7 +135,10 @@ func (dev *LinkQuality) update(payload map[string]interface{}) {
 	value, err := convertToInt(payload[dev.Expose.Name])
 	if err == nil {
 		value = value * 100 / 255
-		dev.GetAttribute("level").SetValue(value)
+		oldValue := dev.GetAttribute("level").Value.(int)
+		if value > oldValue+5 || value < oldValue-5 {
+			dev.GetAttribute("level").SetValue(value)
+		}
 	}
 }