Add IntRange.ContainsNonNegative
diff --git a/lib/interval/interval.go b/lib/interval/interval.go
index 9dc648d..a8d5f32 100644
--- a/lib/interval/interval.go
+++ b/lib/interval/interval.go
@@ -241,6 +241,18 @@
 	return x[1] == nil || x[0].Cmp(x[1]) <= 0
 }
 
+// ContainsNonNegative returns whether x contains at least one non-negative
+// value.
+func (x IntRange) ContainsNonNegative() bool {
+	if x[1] == nil {
+		return true
+	}
+	if x[1].Sign() < 0 {
+		return false
+	}
+	return x[0] == nil || x[0].Cmp(x[1]) <= 0
+}
+
 // ContainsPositive returns whether x contains at least one positive value.
 func (x IntRange) ContainsPositive() bool {
 	if x[1] == nil {
@@ -818,7 +830,7 @@
 }
 
 func andOneNegOneNonNeg(neg IntRange, non IntRange) (z IntRange) {
-	if neg.Empty() || neg.ContainsZero() || neg.ContainsPositive() || non.Empty() || non.ContainsNegative() {
+	if neg.Empty() || neg.ContainsNonNegative() || non.Empty() || non.ContainsNegative() {
 		panic("pre-condition failure")
 	}