I found (occurring to me in the early morning hours) a way to correct some of the “lumpy” properties of the characterize.pl output.
When the algorithm adds 1 to the Ceiling Root, as needed, to produce the Adjusted Ceiling Square, I had forgotten to make sure also that the points I want the characteristic polynomial to give me are the points for x=1, 3, and 5, rather than 0, 2, and 4.
This had the gratifying effect of getting rid of the negative discriminant in nearly all of the cases I have tested so far. That it has not wiped absolutely all of them out tells me I need to examine my algorithm and code more closely.
When I have done so, and made all the necessary corrections to whatever unanticipated problems there are, I will edit the code I posted yesterday and make a new post linking to the updated script. Stay tuned.