diff --git a/core/api/src/main/java/org/onosproject/net/meter/Band.java b/core/api/src/main/java/org/onosproject/net/meter/Band.java
index 1942876..35a816f 100644
--- a/core/api/src/main/java/org/onosproject/net/meter/Band.java
+++ b/core/api/src/main/java/org/onosproject/net/meter/Band.java
@@ -20,6 +20,10 @@
  */
 public interface Band {
 
+    short MIN_PRECEDENCE = 0;
+    short MAX_PRECEDENCE = 255;
+    String ERR_MSG = "Precedence out of range";
+
     /**
      * Specifies the type of band.
      */
diff --git a/core/api/src/main/java/org/onosproject/net/meter/DefaultBand.java b/core/api/src/main/java/org/onosproject/net/meter/DefaultBand.java
index 236566cb..b0ce738 100644
--- a/core/api/src/main/java/org/onosproject/net/meter/DefaultBand.java
+++ b/core/api/src/main/java/org/onosproject/net/meter/DefaultBand.java
@@ -34,6 +34,9 @@
     public DefaultBand(Type type, long rate,
                        Long burstSize, Short prec) {
         this.type = type;
+        if (type == Type.REMARK) {
+            checkArgument(prec <= MAX_PRECEDENCE && prec >= MIN_PRECEDENCE, ERR_MSG);
+        }
         this.rate = rate;
         this.burstSize = burstSize;
         this.prec = prec;
diff --git a/core/api/src/test/java/org/onosproject/net/meter/DefaultMeterTest.java b/core/api/src/test/java/org/onosproject/net/meter/DefaultMeterTest.java
index e66e5a6..3dcb62f 100644
--- a/core/api/src/test/java/org/onosproject/net/meter/DefaultMeterTest.java
+++ b/core/api/src/test/java/org/onosproject/net/meter/DefaultMeterTest.java
@@ -35,6 +35,7 @@
     private Meter m1;
     private Meter sameAsm1;
     private Meter m2;
+    private Meter m3;
 
     @Before
     public void setup() {
@@ -44,6 +45,12 @@
                 .withRate(500)
                 .build();
 
+        Band band1 = DefaultBand.builder()
+                .ofType(Band.Type.REMARK)
+                .withRate(500)
+                .dropPrecedence((short) 1)
+                .build();
+
         m1 = DefaultMeter.builder()
                 .forDevice(did("1"))
                 .fromApp(APP_ID)
@@ -68,13 +75,23 @@
                 .withBands(Collections.singletonList(band))
                 .build();
 
+        m3 = DefaultMeter.builder()
+                .forDevice(did("3"))
+                .fromApp(APP_ID)
+                .withId(MeterId.meterId(3))
+                .withUnit(Meter.Unit.KB_PER_SEC)
+                .withBands(Collections.singletonList(band1))
+                .build();
+
+
     }
 
     @Test
     public void testEquality() {
         new EqualsTester()
                 .addEqualityGroup(m1, sameAsm1)
-                .addEqualityGroup(m2).testEquals();
+                .addEqualityGroup(m2)
+                .addEqualityGroup(m3).testEquals();
     }
 
     @Test
