diff --git a/packages/binary/messagelayer/tangle/tangle.go b/packages/binary/messagelayer/tangle/tangle.go
index 5935619c7a91276ba31fca660ed7e43762546460..66dc3aff47d14436c2968db3e401e9a1be50c37e 100644
--- a/packages/binary/messagelayer/tangle/tangle.go
+++ b/packages/binary/messagelayer/tangle/tangle.go
@@ -159,7 +159,9 @@ func (tangle *Tangle) DBStats() (solidCount int, messageCount int, avgSolidifica
 		})
 		return true
 	})
-	avgSolidificationTime = float64(sumSolidificationTime.Milliseconds()) / float64(solidCount)
+	if solidCount > 0 {
+		avgSolidificationTime = float64(sumSolidificationTime.Milliseconds()) / float64(solidCount)
+	}
 	// TODO: get rid of console printing
 	fmt.Println("solid", solidCount, "message", messageCount, "iterations", iterations)
 	return
diff --git a/plugins/metrics/message.go b/plugins/metrics/message.go
index 4737eca7a52a2aa07808655332b2bfdc2f442e42..a552571d19e67a1fd79b4978d100ec263928b82f 100644
--- a/plugins/metrics/message.go
+++ b/plugins/metrics/message.go
@@ -96,10 +96,14 @@ func MessageTotalCountDB() uint64 {
 }
 
 // AvgSolidificationTime returns the average time it takes for a message to become solid. [milliseconds]
-func AvgSolidificationTime() float64 {
+func AvgSolidificationTime() (result float64) {
 	solidTimeMutex.RLock()
 	defer solidTimeMutex.RUnlock()
-	return (initialSumSolidificationTime + float64(sumSolidificationTime.Milliseconds())) / float64(MessageSolidCountDB())
+	totalSolid := MessageSolidCountDB()
+	if totalSolid > 0 {
+		result = (initialSumSolidificationTime + float64(sumSolidificationTime.Milliseconds())) / float64(totalSolid)
+	}
+	return
 }
 
 // ReceivedMessagesPerSecond retrieves the current messages per second number.