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] >>>; }