It's interesting and a little counter-intuitive, but I guess it's sorted based on ascension. Where negative becomes more negative, and positive becomes more positive.
I would suggest sorting the negative list descending, and sorting the postive list ascending, and then merging the two.
I can reproduce it in a listview in a native profile. It's gotta be a bug. Using a nanoflow as datasource does sort the list correctly.
I tried it myself, for me the sorting seems to work. Am I doing something different from what you do?
are you sure, that your attribute is of type Integer? The case your describing looks like your are sorting a String attribute, which would explain the “wrong” sort order.