diff --git a/server/src/main.cpp b/server/src/main.cpp
index e1b4600..57e59ed 100644
--- a/server/src/main.cpp
+++ b/server/src/main.cpp
@@ -265,7 +265,7 @@ void CMain::JSONUpdateThread(void *pUser)
 					str_format(aUptime, sizeof(aUptime), "%02d:%02d:%02d", (int)(pClients[i].m_Stats.m_Uptime/60.0/60.0), (int)((pClients[i].m_Stats.m_Uptime/60)%60), (int)((pClients[i].m_Stats.m_Uptime)%60));
 
 				// track month network traffic, diff: 2021-10-01 00:10
-				// if ServerStatus is active then last_network_in/out is month traffic diff, else last_network_in/out is last record flag.
+				// last_network_in/out is last record flag.
                 time_t currentStamp = (long long)time(/*ago*/0);
                 if(0 == pClients[i].m_LastNetworkIN || (localtime(&currentStamp)->tm_mday == pClients[i].m_aMonthStart && localtime(&currentStamp)->tm_hour == 0 && localtime(&currentStamp)->tm_min < 10))
                 {
@@ -281,8 +281,8 @@ void CMain::JSONUpdateThread(void *pUser)
 					pClients[i].m_Stats.m_time_10010, pClients[i].m_Stats.m_time_189, pClients[i].m_Stats.m_time_10086,pClients[i].m_Stats.m_tcpCount,pClients[i].m_Stats.m_udpCount,pClients[i].m_Stats.m_processCount,pClients[i].m_Stats.m_threadCount,
 					pClients[i].m_Stats.m_NetworkRx, pClients[i].m_Stats.m_NetworkTx, pClients[i].m_Stats.m_NetworkIN, pClients[i].m_Stats.m_NetworkOUT, (int)pClients[i].m_Stats.m_CPU, pClients[i].m_Stats.m_MemTotal, pClients[i].m_Stats.m_MemUsed,
 					pClients[i].m_Stats.m_SwapTotal, pClients[i].m_Stats.m_SwapUsed, pClients[i].m_Stats.m_HDDTotal, pClients[i].m_Stats.m_HDDUsed,
-					pClients[i].m_Stats.m_NetworkIN == 0 ? pClients[i].m_LastNetworkIN : pClients[i].m_Stats.m_NetworkIN - pClients[i].m_LastNetworkIN,
-					pClients[i].m_Stats.m_NetworkOUT == 0 ? pClients[i].m_LastNetworkOUT : pClients[i].m_Stats.m_NetworkOUT - pClients[i].m_LastNetworkOUT,
+					pClients[i].m_Stats.m_NetworkIN == 0 || pClients[i].m_LastNetworkIN == 0 ? pClients[i].m_Stats.m_NetworkIN : pClients[i].m_LastNetworkIN,
+					pClients[i].m_Stats.m_NetworkOUT == 0 || pClients[i].m_LastNetworkOUT == 0 ? pClients[i].m_Stats.m_NetworkOUT : pClients[i].m_LastNetworkOUT,
 					pClients[i].m_Stats.m_aCustom);
 				pBuf += strlen(pBuf);
 			}
diff --git a/web/js/serverstatus.js b/web/js/serverstatus.js
index ebe90bf..ba9266b 100644
--- a/web/js/serverstatus.js
+++ b/web/js/serverstatus.js
@@ -152,15 +152,17 @@ function uptime() {
 
 				// month traffic
 				var monthtraffic = "";
-				if(result.servers[i].last_network_in < 1024*1024*1024*1024)
-					monthtraffic += (result.servers[i].last_network_in/1024/1024/1024).toFixed(2) + "G";
+				var trafficdiff_in = result.servers[i].network_in - result.servers[i].last_network_in;
+				var trafficdiff_out = result.servers[i].network_out - result.servers[i].last_network_out;
+				if(trafficdiff_in < 1024*1024*1024*1024)
+					monthtraffic += (trafficdiff_in/1024/1024/1024).toFixed(2) + "G";
 				else
-					monthtraffic += (result.servers[i].last_network_in/1024/1024/1024/1024).toFixed(2) + "T";
+					monthtraffic += (trafficdiff_in/1024/1024/1024/1024).toFixed(2) + "T";
 				monthtraffic += " | "
-				if(result.servers[i].last_network_out < 1024*1024*1024*1024)
-					monthtraffic += (result.servers[i].last_network_out/1024/1024/1024).toFixed(2) + "G";
+				if(trafficdiff_out < 1024*1024*1024*1024)
+					monthtraffic += (trafficdiff_out/1024/1024/1024).toFixed(2) + "G";
 				else
-					monthtraffic += (result.servers[i].last_network_out/1024/1024/1024/1024).toFixed(2) + "T";
+					monthtraffic += (trafficdiff_out/1024/1024/1024/1024).toFixed(2) + "T";
 				TableRow.children["month_traffic"].children[0].children[0].className = "progress-bar";
 				TableRow.children["month_traffic"].children[0].children[0].innerHTML = "<small>"+monthtraffic+"</small>";