In a manual (pen and paper) multiplication you start at the right with the unit digits and and add the carry to the left.
Your program starts with the most significant digits and the carry to the right. That is obviously not the same, and gives wrong answers.
I changed the multiplication loops to
For i= Array.GetItemCount(arr1)-1 to 0 step -1 ''invers direction
For j=Array.GetItemCount(arr2)-1 to 0 step -1
ans[i+j]=ans[i+j]+arr1[i]*arr2[j]
ans[i+j-1]=ans[i+j-1]+Math.Floor( ans[i+j]/10) ''carry to the left (2 minus signs)
ans[i+j]=Math.Remainder(ans[i+j],10)
EndFor
EndFor`
The last carry goes to ans[-1] so you have to change the output loop from -1 to the last digit.