Shader behaves differently on tvOS (Apple TV)

I’ve got a shader of 2d water with a foam. Nothing fancy or super complex.
However I was unpleasantly surprised when I launched the game on tvOS: the shader was definitely working incorrectly since the water had to much foam.
5309679--533715--upload_2019-12-23_17-35-53.png
Here is an abstract of the fragment shader responsible for the foam

fixed4 frag(v2f IN) : SV_Target
{
    half2 dist1 = tex2D( _DistMap, IN.uvdist1 ).rg;
    half2 dist2 = tex2D( _DistMap, IN.uvdist2 ).rg;
    half2 dist = lerp(dist1, dist2, _DetailInfluence) * 2.0 - 1.0;

    fixed wave = sqrt(saturate(dist.x * dist.y));
    fixed foam = step(_WaveFoam, wave);
    fixed4 foamColor = fixed4(foam.xxx * _WaveFoamAlpha, 0.0);
    ...
    fixed4 color = tex2D( _ReflMap, reflUV );
    ...
    color += waveCrestColor;
    return saturate(color);
}

My first thought was about precision. I tried changing fixed to half, but it made no change.
Also I had no saturate inside sqrt before, but it made no changes too.
Any ideas why Apple TV’s PowerVR runs my shader this way?

Actually it appeared the saturate inside sqrt indeed solved the problem.