private boolean checkForCarry(char[] ca1,int icarry){
  boolean carry=false;
  if (icarry < ca1.length) {
    if (ca1[icarry] == '6' || ca1[icarry] == '7' || ca1[icarry] == '8' || ca1[icarry] == '9')     carry=true;
 else     if (ca1[icarry] == '5') {
      int ii=icarry + 1;
      for (; ii < ca1.length; ii++)       if (ca1[ii] != '0')       break;
      carry=ii < ca1.length;
      if (!carry && icarry > 0) {
        carry=(ca1[icarry - 1] == '1' || ca1[icarry - 1] == '3' || ca1[icarry - 1] == '5' || ca1[icarry - 1] == '7' || ca1[icarry - 1] == '9');
      }
    }
  }
  return carry;
}

private boolean checkForCarry ( char [ ] ca1 , int icarry ) { boolean carry = false ; if ( icarry < ca1 . length ) { if ( ca1 [ icarry ] == '6' || ca1 [ icarry ] == '7' || ca1 [ icarry ] == '8' || ca1 [ icarry ] == '9' ) carry = true ; else if ( ca1 [ icarry ] == '5' ) { int ii = icarry + 1 ; for ( ; ii < ca1 . length ; ii ++ ) if ( ca1 [ ii ] != '0' ) break ; carry = ii < ca1 . length ; if ( ! carry && icarry > 0 ) { carry = ( ca1 [ icarry - 1 ] == '1' || ca1 [ icarry - 1 ] == '3' || ca1 [ icarry - 1 ] == '5' || ca1 [ icarry - 1 ] == '7' || ca1 [ icarry - 1 ] == '9' ) ; } } } return carry ; }
check to see if the digits that are going to be truncated because of the precision should force a round in the preceding digits .
