It’s because Suneido is interpreting it as:
whereas what you want is:
1) Is this interpretation right? I mean shouldn’t Suneido interpret it a negative number and then apply the method?
2) Does this mean that when there is a possibility of a negative number being acted upon by a method, we should always use the number inside parenthesis or supply it as variable?
3) Your explanation works for the results obtained from WorkSpace. When a Print((this * factor).Ceiling()) is used inside the RoundUp method, it gives a positive number ignoring the sign of the supplied number. When a Print(this) is used, it can be seen that this is returned as a positive number, ignoring the sign. Is this behaviour expected?
4) When I use a Print(digit) statement inside the Round() method, Suneido crashes showing value stack overflow error.