No, there isn't any bug with the else-condition. While it is working correct, the logic behind the creation of the events is incorrect.
Let's have a closer look at it:
+ Terrain: Terrain overlaps Shadows
+ Terrain: Value 'Nodarken' Equal to 0
-> Terrain: Set filter to
+ System: Else
-> Terrain: Set filter to
On every tick CC is ordered to check if any Terrain overlaps any shadow. Of those, only the ones with the correct value of the pv are picked. This selection of objects get a grey filter.
But using 'else' here means that only if NO terrain is overlapping any shadow, all terrains will get the white filter.
As you can see in your layout, there are several instances of 'Whiterock2' that always overlap a shadow object, so the else-branch will never be executed, because the first conditions are always true.
Currently all terrain objects are tested on every tick. Unless it isn't so, you can (besides Metal_X's solution) also do it just like this:
+ System: Always (every tick)
-> Terrain: Set filter to white
+ Terrain: Terrain overlaps Shadows
+ Terrain: Value 'Nodarken' Equal to 0
-> Terrain: Set filter to grey