diff --git a/internal/pkg/openflow/client.go b/internal/pkg/openflow/client.go
index ca8121c..b7d5a28 100644
--- a/internal/pkg/openflow/client.go
+++ b/internal/pkg/openflow/client.go
@@ -53,7 +53,7 @@
 
 	// according to testing this is the maximum content of an
 	// openflow message to remain under 64KB
-	ofcFlowsChunkSize     = 450 // this amount of flows is around 57KB
+	ofcFlowsChunkSize     = 400 // this amount of flows is around 40KB for DT, 47KB ATT and 61KB for TT
 	ofcPortsChunkSize     = 550 // this amount of port stats is around 61KB
 	ofcPortsDescChunkSize = 900 // this amount of port desc is around 57KB
 )
diff --git a/internal/pkg/openflow/stats.go b/internal/pkg/openflow/stats.go
index d50fc14..096e731 100644
--- a/internal/pkg/openflow/stats.go
+++ b/internal/pkg/openflow/stats.go
@@ -383,7 +383,9 @@
 	n := 0
 	for n <= total {
 
-		chunk := flows[n*chunkSize : min((n*chunkSize)+chunkSize, len(flows))]
+		limit := (n * chunkSize) + chunkSize
+
+		chunk := flows[n*chunkSize : min(limit, len(flows))]
 
 		if len(chunk) == 0 {
 			break
@@ -393,7 +395,7 @@
 		response.SetXid(request.GetXid())
 		response.SetVersion(4)
 		response.SetFlags(ofp.StatsReplyFlags(request.GetFlags()))
-		if total != n {
+		if limit < len(flows) {
 			response.SetFlags(ofp.StatsReplyFlags(ofp.OFPSFReplyMore))
 		}
 		response.SetEntries(chunk)
diff --git a/internal/pkg/openflow/stats_test.go b/internal/pkg/openflow/stats_test.go
index e80d239..d618fe4 100644
--- a/internal/pkg/openflow/stats_test.go
+++ b/internal/pkg/openflow/stats_test.go
@@ -185,23 +185,29 @@
 	}
 }
 
-func TestHandleFlowStatsRequest(t *testing.T) {
+func TestHandleFlowStatsRequestExactlyDivisible(t *testing.T) {
 
-	generatedFlowsCount := 2000
+	generatedFlowsCount := ofcFlowsChunkSize * 5
 
-	ofc := newTestOFConnection(2000, 0)
+	testCorrectChunkAndReplyMoreFlag(t, generatedFlowsCount)
+}
 
+func TestHandleFlowStatsRequestNotExactlyDivisible(t *testing.T) {
+
+	generatedFlowsCount := int(ofcFlowsChunkSize * 5.5)
+
+	testCorrectChunkAndReplyMoreFlag(t, generatedFlowsCount)
+}
+
+func testCorrectChunkAndReplyMoreFlag(t *testing.T, generatedFlowsCount int) {
+	ofc := newTestOFConnection(generatedFlowsCount, 0)
 	request := of13.NewFlowStatsRequest()
-
 	replies, err := ofc.handleFlowStatsRequest(context.Background(), request)
 	assert.Equal(t, err, nil)
-
 	// check that the correct number of messages is generated
 	assert.Equal(t, int(math.Ceil(float64(generatedFlowsCount)/ofcFlowsChunkSize)), len(replies))
-
 	n := 1
 	entriesCount := 0
-
 	for _, r := range replies {
 		json, _ := r.Flags.MarshalJSON()
 
@@ -226,7 +232,6 @@
 		entriesCount = entriesCount + len(r.GetEntries())
 		n++
 	}
-
 	// make sure all the generate item are included in the responses
 	assert.Equal(t, generatedFlowsCount, entriesCount)
 }
