diff --git a/modules/features2d/src/agast_score.cpp b/modules/features2d/src/agast_score.cpp
index ad9b4488ee..ac80077aea 100644
--- a/modules/features2d/src/agast_score.cpp
+++ b/modules/features2d/src/agast_score.cpp
@@ -82,10 +82,15 @@ void makeAgastOffsets(int pixel[16], int rowStride, int type)
                               type == AgastFeatureDetector::AGAST_7_12s ? offsets12s :
                               type == AgastFeatureDetector::AGAST_5_8 ? offsets8  : 0;
 
+    const int offsets_len = type == AgastFeatureDetector::OAST_9_16 ? 16 :
+                            type == AgastFeatureDetector::AGAST_7_12d ? 12 :
+                            type == AgastFeatureDetector::AGAST_7_12s ? 12 :
+                            type == AgastFeatureDetector::AGAST_5_8 ? 8 : 0;
+
     CV_Assert(pixel && offsets);
 
     int k = 0;
-    for( ; k < 16; k++ )
+    for( ; k < offsets_len; k++ )
         pixel[k] = offsets[k][0] + offsets[k][1] * rowStride;
 }