Sorry, this is the right code that shows 'the issue':

function static void insert_1( string array[], string x, int pos )
{
    string mom_arr[0];
    if( pos < array.size() && pos >= 0 )
    {
        for( pos => int c; c < array.size(); c++ )
        {
            mom_arr << array[c];
        }
        x => array[ pos ];
        array.size( array.size() + 1 );
        for( 0 => int c; c < mom_arr.size(); c++ )
        {
            mom_arr[c] => array[ c + pos + 1 ];
        }
    }
    else if( pos == array.size() )
    {
        array << x;
    }
}

function static void insert_2( string array[], string x, int pos )
{
    string mom_arr[0];
    if( pos < array.size()  && pos >= 0 )
    {
        for( pos => int c; c < array.size(); c++ )
        {
            mom_arr.size( mom_arr.size() + 1 );
            array[c] => mom_arr[ c - pos ];
        }
        x => array[ pos ];
        array.size( array.size() + 1 );
        for( 0 => int c; c < mom_arr.size(); c++ )
        {
            mom_arr[c] => array[ c + pos + 1 ];
        }
    }
    else if( pos == array.size() )
    {
        array << x;
    }
}

["a", "b", "c"] @=> string s_1[];
insert_1( s_1, "ONE", 1 );
for( 0 => int c; c < s_1.size(); c++ )
{
    <<< s_1[c] >>>;
}
<<< "" >>>;
["a", "b", "c"] @=> string s_2[];
insert_2( s_2, "ONE", 1 );
for( 0 => int c; c < s_2.size(); c++ )
{
    <<< s_2[c] >>>;
}