﻿# V6131\. Casting to a type with a smaller range will result in an overflow\.

The analyzer has detected that an integer value is cast to a data type with a smaller size, which leads to an overflow\. This happens because a source value is outside the valid range of the target type\.

The example of such an overflow:

```cpp
static final long MAX_CHUNK_SIZE = 4L * 1024 * 1024 * 1024;

void makeChunks(int fileSize) {
    int chunkSize = Math.min(fileSize, (int) MAX_CHUNK_SIZE);

    ....
}
```

The `4L * 1024 * 1024 * 1024` expression equals 4,294,967,296 \(`2^32`\), which is then cast to `int`\. This value exceeds the valid `int` range \(`[-2^31..2^31-1]`\)\. As a result, the value becomes 0 instead of the expected maximum\.

To avoid the overflow, use the `long` type for all variables and parameters involved in the calculations:

```cpp
static final long MAX_CHUNK_SIZE = 4L * 1024 * 1024 * 1024;

void makeChunks(long fileSize) {
    long chunkSize = Math.min(fileSize, MAX_CHUNK_SIZE);

    ....
}
```