diff --git a/core/api/src/main/java/org/onosproject/mastership/MastershipTerm.java b/core/api/src/main/java/org/onosproject/mastership/MastershipTerm.java
index b2c0e41..b1e3503 100644
--- a/core/api/src/main/java/org/onosproject/mastership/MastershipTerm.java
+++ b/core/api/src/main/java/org/onosproject/mastership/MastershipTerm.java
@@ -24,14 +24,14 @@
 public final class MastershipTerm {
 
     private final NodeId master;
-    private final int termNumber;
+    private final long termNumber;
 
-    private MastershipTerm(NodeId master, int term) {
+    private MastershipTerm(NodeId master, long term) {
         this.master = master;
         this.termNumber = term;
     }
 
-    public static MastershipTerm of(NodeId master, int term) {
+    public static MastershipTerm of(NodeId master, long term) {
         return new MastershipTerm(master, term);
     }
 
@@ -39,7 +39,7 @@
         return master;
     }
 
-    public int termNumber() {
+    public long termNumber() {
         return termNumber;
     }
 
diff --git a/core/store/dist/src/main/java/org/onosproject/store/device/impl/DeviceClockManager.java b/core/store/dist/src/main/java/org/onosproject/store/device/impl/DeviceClockManager.java
index f99e826..ddb45dc 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/device/impl/DeviceClockManager.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/device/impl/DeviceClockManager.java
@@ -19,7 +19,7 @@
 
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
-import java.util.concurrent.atomic.AtomicInteger;
+import java.util.concurrent.atomic.AtomicLong;
 
 import org.apache.felix.scr.annotations.Activate;
 import org.apache.felix.scr.annotations.Component;
@@ -43,7 +43,7 @@
     private final Logger log = getLogger(getClass());
 
     // TODO: Implement per device ticker that is reset to 0 at the beginning of a new term.
-    private final AtomicInteger ticker = new AtomicInteger(0);
+    private final AtomicLong ticker = new AtomicLong(0);
     private ConcurrentMap<DeviceId, MastershipTerm> deviceMastershipTerms = new ConcurrentHashMap<>();
 
     @Activate
diff --git a/core/store/dist/src/main/java/org/onosproject/store/impl/MastershipBasedTimestamp.java b/core/store/dist/src/main/java/org/onosproject/store/impl/MastershipBasedTimestamp.java
index 9c3221a..01de50d 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/impl/MastershipBasedTimestamp.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/impl/MastershipBasedTimestamp.java
@@ -34,8 +34,8 @@
  */
 public final class MastershipBasedTimestamp implements Timestamp {
 
-    private final int termNumber;
-    private final int sequenceNumber;
+    private final long termNumber;
+    private final long sequenceNumber;
 
     /**
      * Default version tuple.
@@ -43,7 +43,7 @@
      * @param termNumber the mastership termNumber
      * @param sequenceNumber  the sequenceNumber number within the termNumber
      */
-    public MastershipBasedTimestamp(int termNumber, int sequenceNumber) {
+    public MastershipBasedTimestamp(long termNumber, long sequenceNumber) {
         this.termNumber = termNumber;
         this.sequenceNumber = sequenceNumber;
     }
@@ -91,7 +91,7 @@
      *
      * @return termNumber
      */
-    public int termNumber() {
+    public long termNumber() {
         return termNumber;
     }
 
@@ -100,7 +100,7 @@
      *
      * @return sequenceNumber
      */
-    public int sequenceNumber() {
+    public long sequenceNumber() {
         return sequenceNumber;
     }
 
diff --git a/core/store/dist/src/main/java/org/onosproject/store/serializers/impl/MastershipBasedTimestampSerializer.java b/core/store/dist/src/main/java/org/onosproject/store/serializers/impl/MastershipBasedTimestampSerializer.java
index 3d4323b..187b854 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/serializers/impl/MastershipBasedTimestampSerializer.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/serializers/impl/MastershipBasedTimestampSerializer.java
@@ -38,14 +38,14 @@
 
     @Override
     public void write(Kryo kryo, Output output, MastershipBasedTimestamp object) {
-        output.writeInt(object.termNumber());
-        output.writeInt(object.sequenceNumber());
+        output.writeLong(object.termNumber());
+        output.writeLong(object.sequenceNumber());
     }
 
     @Override
     public MastershipBasedTimestamp read(Kryo kryo, Input input, Class<MastershipBasedTimestamp> type) {
-        final int term = input.readInt();
-        final int sequence = input.readInt();
+        final long term = input.readLong();
+        final long sequence = input.readLong();
         return new MastershipBasedTimestamp(term, sequence);
     }
 }
diff --git a/core/store/serializers/src/main/java/org/onosproject/store/serializers/MastershipTermSerializer.java b/core/store/serializers/src/main/java/org/onosproject/store/serializers/MastershipTermSerializer.java
index f30979a..9ebfd06 100644
--- a/core/store/serializers/src/main/java/org/onosproject/store/serializers/MastershipTermSerializer.java
+++ b/core/store/serializers/src/main/java/org/onosproject/store/serializers/MastershipTermSerializer.java
@@ -39,13 +39,13 @@
     @Override
     public MastershipTerm read(Kryo kryo, Input input, Class<MastershipTerm> type) {
         final NodeId node = (NodeId) kryo.readClassAndObject(input);
-        final int term = input.readInt();
+        final long term = input.readLong();
         return MastershipTerm.of(node, term);
     }
 
     @Override
     public void write(Kryo kryo, Output output, MastershipTerm object) {
         kryo.writeClassAndObject(output, object.master());
-        output.writeInt(object.termNumber());
+        output.writeLong(object.termNumber());
     }
 }
