diff --git a/PM_Notes.md b/PM_Notes.md
index 09cd64a..4148207 100644
--- a/PM_Notes.md
+++ b/PM_Notes.md
@@ -28,11 +28,12 @@
 ```
 // OpticalPowerGroupMetrics are supported optical pm names
 var OpticalPowerGroupMetrics = map[string]voltha.PmConfig_PmType{
-	"ani_g_instance_id": voltha.PmConfig_CONTEXT,
-	"transmit_power":    voltha.PmConfig_GAUGE,
-	"receive_power":     voltha.PmConfig_GAUGE,
+	"ani_g_instance_id":  voltha.PmConfig_CONTEXT,
+	"transmit_power_dBm": voltha.PmConfig_GAUGE,
+	"receive_power_dBm":  voltha.PmConfig_GAUGE,
 }
 ```
+
 ### _UniStatus_
 ```
 // UniStatusGroupMetrics are supported UNI status names
@@ -44,17 +45,6 @@
 }
 ```
 
-### _UniStatusGroupMetrics_
-```
-var UniStatusGroupMetrics = map[string]voltha.PmConfig_PmType{
-	"uni_port_no":     voltha.PmConfig_CONTEXT,
-	"entity_id":       voltha.PmConfig_CONTEXT,
-	"ethernet_type":   voltha.PmConfig_GAUGE,
-	"oper_status":     voltha.PmConfig_GAUGE,
-	"uni_admin_state": voltha.PmConfig_GAUGE,
-}
-```
-
 ### _EthernetBridgeHistory_
 ```
 var EthernetBridgeHistory = map[string]voltha.PmConfig_PmType{
@@ -136,8 +126,6 @@
 }
 ```
 
-`Note` : The values collected for the metrics are as is from the OMCI messages, meaning the adapter does not do any sort of conversion. Refer OMCI spec (G.988 v 11/2017 edition) to get more details of the units of the collected metrics.
-
 ## Basic KPI Format (**KpiEvent2**)
 
 The KPI information is published on the kafka bus under the _voltha.events_ topic. For
diff --git a/VERSION b/VERSION
index 98974210..c322f2e 100755
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.2.6-dev
+1.2.6-dev175
diff --git a/internal/pkg/onuadaptercore/onu_metrics_manager.go b/internal/pkg/onuadaptercore/onu_metrics_manager.go
index 806f1e1..41efe82 100644
--- a/internal/pkg/onuadaptercore/onu_metrics_manager.go
+++ b/internal/pkg/onuadaptercore/onu_metrics_manager.go
@@ -28,6 +28,7 @@
 	"github.com/opencord/voltha-lib-go/v4/pkg/db/kvstore"
 	"github.com/opencord/voltha-lib-go/v4/pkg/log"
 	"github.com/opencord/voltha-protos/v4/go/voltha"
+	"math"
 	"sync"
 	"time"
 )
@@ -65,9 +66,9 @@
 
 // OpticalPowerGroupMetrics are supported optical pm names
 var OpticalPowerGroupMetrics = map[string]voltha.PmConfig_PmType{
-	"ani_g_instance_id": voltha.PmConfig_CONTEXT,
-	"transmit_power":    voltha.PmConfig_GAUGE,
-	"receive_power":     voltha.PmConfig_GAUGE,
+	"ani_g_instance_id":  voltha.PmConfig_CONTEXT,
+	"transmit_power_dBm": voltha.PmConfig_GAUGE,
+	"receive_power_dBm":  voltha.PmConfig_GAUGE,
 }
 
 // OpticalPowerGroupMetrics specific constants
@@ -674,13 +675,13 @@
 					if val, ok := meAttributes["ManagedEntityId"]; ok && val != nil {
 						opticalMetrics[k] = float32(val.(uint16))
 					}
-				case "transmit_power":
+				case "transmit_power_dBm":
 					if val, ok := meAttributes["TransmitOpticalLevel"]; ok && val != nil {
-						opticalMetrics[k] = float32(val.(uint16))
+						opticalMetrics[k] = float32(math.Round((float64(mm.twosComplementToSignedInt16(val.(uint16)))/500.0)*10) / 10) // convert to dBm rounded of to single decimal place
 					}
-				case "receive_power":
+				case "receive_power_dBm":
 					if val, ok := meAttributes["OpticalSignalLevel"]; ok && val != nil {
-						opticalMetrics[k] = float32(val.(uint16))
+						opticalMetrics[k] = float32(math.Round((float64(mm.twosComplementToSignedInt16(val.(uint16)))/500.0)*10) / 10) // convert to dBm rounded of to single decimal place
 					}
 				default:
 					// do nothing
@@ -2615,3 +2616,34 @@
 	}
 	return slice
 }
+
+func (mm *onuMetricsManager) twosComplementToSignedInt16(val uint16) int16 {
+	var uint16MsbMask uint16 = 0x8000
+	if val&uint16MsbMask == uint16MsbMask {
+		return int16(^val+1) * -1
+	}
+
+	return int16(val)
+}
+
+/* // These are need in the future
+
+func (mm *onuMetricsManager) twosComplementToSignedInt32(val uint32) int32 {
+	var uint32MsbMask uint32 = 0x80000000
+	if val & uint32MsbMask == uint32MsbMask {
+		return int32(^val + 1) * -1
+	}
+
+	return int32(val)
+}
+
+func (mm *onuMetricsManager) twosComplementToSignedInt64(val uint64) int64 {
+	var uint64MsbMask uint64 = 0x8000000000000000
+	if val & uint64MsbMask == uint64MsbMask {
+		return int64(^val + 1) * -1
+	}
+
+	return int64(val)
+}
+
+*/
