diff --git a/apps/roadm/app/src/main/java/org/onosproject/roadm/DistributedRoadmStore.java b/apps/roadm/app/src/main/java/org/onosproject/roadm/DistributedRoadmStore.java
index e13b2c7..cbe2927 100644
--- a/apps/roadm/app/src/main/java/org/onosproject/roadm/DistributedRoadmStore.java
+++ b/apps/roadm/app/src/main/java/org/onosproject/roadm/DistributedRoadmStore.java
@@ -39,15 +39,15 @@
 public class DistributedRoadmStore implements RoadmStore {
     private static Logger log = LoggerFactory.getLogger(DistributedRoadmStore.class);
 
-    private ConsistentMap<DeviceId, Map<PortNumber, Long>> distPowerMap;
-    private Map<DeviceId, Map<PortNumber, Long>> powerMap;
+    private ConsistentMap<DeviceId, Map<PortNumber, Double>> distPowerMap;
+    private Map<DeviceId, Map<PortNumber, Double>> powerMap;
 
     @Reference(cardinality = ReferenceCardinality.MANDATORY)
     protected StorageService storageService;
 
     @Activate
     public void activate() {
-        distPowerMap = storageService.<DeviceId, Map<PortNumber, Long>>consistentMapBuilder()
+        distPowerMap = storageService.<DeviceId, Map<PortNumber, Double>>consistentMapBuilder()
                 .withName("onos-roadm-distributed-store")
                 .withSerializer(Serializer.using(KryoNamespaces.API))
                 .build();
@@ -77,8 +77,8 @@
 
 
     @Override
-    public void setTargetPower(DeviceId deviceId, PortNumber portNumber, long targetPower) {
-        Map<PortNumber, Long> portMap = powerMap.get(deviceId);
+    public void setTargetPower(DeviceId deviceId, PortNumber portNumber, double targetPower) {
+        Map<PortNumber, Double> portMap = powerMap.get(deviceId);
         if (portMap != null) {
             portMap.put(portNumber, targetPower);
             powerMap.put(deviceId, portMap);
@@ -88,8 +88,8 @@
     }
 
     @Override
-    public Long getTargetPower(DeviceId deviceId, PortNumber portNumber) {
-        Map<PortNumber, Long> portMap = powerMap.get(deviceId);
+    public Double getTargetPower(DeviceId deviceId, PortNumber portNumber) {
+        Map<PortNumber, Double> portMap = powerMap.get(deviceId);
         if (portMap != null) {
             return portMap.get(portNumber);
         }
