This may not be portable, because the second argument is interpreted as a byte, not an integer. (It works for two complement systems only.) Please use something else, for example declaring the variable within the loop and using static initialization, e.g.:

```c
for (cpu = 0, cpu < cpu_list_len; cpu++)
{
    derive_t derives[] = { -1, -1, -1 -1, -1,  -1, -1, -1 -1, -1,  -1 };
    /* ... */
}
```