diff --git a/les/utils/expiredvalue.go b/les/utils/expiredvalue.go
index 1a2b3d995e3b34684bd21fbc4c0e1432141fc729..3fd52616fac58e16c2fa3d45b1c73d60928aaf92 100644
--- a/les/utils/expiredvalue.go
+++ b/les/utils/expiredvalue.go
@@ -86,11 +86,15 @@ func (e *ExpiredValue) Add(amount int64, logOffset Fixed64) int64 {
 		e.Exp = integer
 	}
 	if base >= 0 || uint64(-base) <= e.Base {
-		// This is a temporary fix to circumvent a golang
-		// uint conversion issue on arm64, which needs to
-		// be investigated further. More details at:
+		// The conversion from negative float64 to
+		// uint64 is undefined in golang, and doesn't
+		// work with ARMv8. More details at:
 		// https://github.com/golang/go/issues/43047
-		e.Base += uint64(int64(base))
+		if base >= 0 {
+			e.Base += uint64(base)
+		} else {
+			e.Base -= uint64(-base)
+		}
 		return amount
 	}
 	net := int64(-float64(e.Base) / factor)