Bug #6468 Submitted: ROUND: returns incorrect result if 2nd argument is negative 5 Nov 2004 17:43 7 Mar 2005 19:00 Trudy Pelzer Closed None MySQL Server: Documentation S3 (Non-critical) 5.0.0-alpha-max-debug Microsoft Windows (Windows XP) Paul Dubois Any D4 (Minor)

[5 Nov 2004 17:43] Trudy Pelzer
```Description:
If ROUND is used with two arguments, and the second argument
is a negative number, the result should be that the function returns
<argument 1> with the integer part of the number zeroed out to the
number of digits specified by <argument 2>. This is not happening
correctly in all cases.

Note: The problem already exists in version 4.1, where I tested
it with 4.1.4-gamma.

How to repeat:
mysql> select round(900500,-1) ;
+------------------+
| round(900500,-1) |
+------------------+
|           900500     |
+------------------+
-- Correct result, the last digit rounded to zero

mysql> select round(-900500,-1) ;
+-------------------+
| round(-900500,-1) |
+-------------------+
|           -900500     |
+-------------------+
-- Correct result, just the negative of the previous example

mysql> select round(900500,-3) ;
+------------------+
| round(900500,-3) |
+------------------+
|           900000     |
+------------------+
-- Correct result, the last 3 digits rounded to zero

mysql> select round(-900500,-3) ;
+-------------------+
| round(-900500,-3) |
+-------------------+
|           -901000     |
+-------------------+
-- Incorrect result. As with example #2, this should just return the
negative of the previous example; that is, the correct result is
-900000

mysql> select round(900500.555,-3) ;
+----------------------+
| round(900500.555,-3) |
+----------------------+
|                   901000  |
+----------------------+
-- Incorrect result. The correct result is 900000.

mysql> select round(-900500.555,-3) ;
+----------------------+
| round(900500.555,-3) |
+----------------------+
|                  -901000  |
+----------------------+
-- Incorrect result. The correct result is -900000.```
[5 Nov 2004 18:41] Miguel Solorzano
```Verfied on Windows with source from latest BK tree:

c:\mysql\bin>mysql -uroot test
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 5.0.2-alpha-nt-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> select round(900500,-1) ;
+------------------+
| round(900500,-1) |
+------------------+
|           900500 |
+------------------+
1 row in set (0.07 sec)

mysql> select round(-900500,-1) ;
+-------------------+
| round(-900500,-1) |
+-------------------+
|           -900500 |
+-------------------+
1 row in set (0.00 sec)

mysql> select round(900500,-3) ;
+------------------+
| round(900500,-3) |
+------------------+
|           900000 |
+------------------+
1 row in set (0.00 sec)

mysql> select round(-900500,-3) ;
+-------------------+
| round(-900500,-3) |
+-------------------+
|           -901000 |
+-------------------+
1 row in set (0.00 sec)

mysql> select round(900500.555,-3) ;
+----------------------+
| round(900500.555,-3) |
+----------------------+
|               901000 |
+----------------------+
1 row in set (0.00 sec)

mysql>```
[5 Nov 2004 18:54] Miguel Solorzano
```Tested also on Linux Slackware and showed partially incorrect
results:

miguel@hegel:~\$ cd dbs/5.0/
miguel@hegel:~/dbs/5.0\$ bin/mysql -uroot
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 5.0.2-alpha-debug-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> select round(900500,-1) ;
+------------------+
| round(900500,-1) |
+------------------+
|           900500 |
+------------------+
1 row in set (0.10 sec)

mysql> select round(-900500,-1) ;
+-------------------+
| round(-900500,-1) |
+-------------------+
|           -900500 |
+-------------------+
1 row in set (0.00 sec)

mysql> select round(900500,-3) ;
+------------------+
| round(900500,-3) |
+------------------+
|           900000 |
+------------------+
1 row in set (0.00 sec)

mysql> select round(-900500,-3) ;
+-------------------+
| round(-900500,-3) |
+-------------------+
|           -900000 |
+-------------------+
1 row in set (0.00 sec)

mysql>  select round(900500.555,-3) ;
+----------------------+
| round(900500.555,-3) |
+----------------------+
|               901000 |
+----------------------+
1 row in set (0.02 sec)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
mysql>```
[4 Mar 2005 12:12] Bugs System
```A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

http://lists.mysql.com/internals/22657```
[7 Mar 2005 17:58] Sergei Golubchik
`The description in the manual is incorrect.`
[7 Mar 2005 19:00] Paul Dubois
```Thank you for your bug report. This issue has been addressed in the
documentation. The updated documentation will appear on our website
shortly, and will be included in the next release of the relevant
product(s).