It's because you can't have two attributes of the same name but of a different type; in this case an int and float of variant.
You were trying to caste the attribute f@variant to i@variant with
i@variant = int(@variant);
You can cast an float attribute to an int attribute, it just has to be a different name.
So you could maybe instead of using the name 'variant' in your initial attribute randomize node, use something like 'point_scatters';
Then in that node where you tried casting just do;
i@variant = int(f@point_scatters');
Then you will find the copy to points will work as you expect.
or......
before your attribute randomize node, you could put down an attribute and specify the point name of 'variant' as an integer,
then the attribute randomize will randomize 'variant' as an integer attribute. And you could then remove your point wrangle node and not have to cast it.