That looks as expected to me. The algorithm finds the maximum value in a circle neighbourhood around each cell. For any given cell in a circular looking pattern in the output (e.g. in the lower left of your example, note that I'm not talking about the circle *neighbourhood* used in the focal algorithm, but the visual circular *patterns* in the output), even for cells towards the outer edge of that visual circle pattern, the maximum value is *always* going to be the value in the centre of the pattern. Consider the overall maximum value of the whole raster. All cells within a circle around that value will get assigned that value because a circular focal neighbourhood centered over any of those cells will include that maximum value. Once your circular focal neighbourhood gets more than 2000 cells (circle radius) away from that particular maximum value then the maximum value changes. If you want to see a more continuous output, use a continuous statistic like mean. This is using QGIS and GRASS r.neighbors, but the algorithm is the same: Input raster [![enter image description here][1]][1] Focal max, note circles in output [![enter image description here][2]][2] Focal mean, much smoother [![enter image description here][3]][3] [1]: https://i.sstatic.net/JfMRUdF2.png [2]: https://i.sstatic.net/JpRqsdy2.png [3]: https://i.sstatic.net/AJlaQFR8.png