I got my Epic badge (50 days at or over rep cap) on EL&U.SE when my reputation page showed only 43 days (not a precise number, I don't recall exactly but it was around that). In other words, the last line of the page showed:

earned at least 200 reputation on 43 days

In fact, in order to get the Epic badge, shouldn't it have read the following?

earned at least 200 reputation on 50 days

An actual hand-count of all the 200-and-over days yielded 50 days at or over 200.

This was puzzling to me, why there should be such a difference, so I wrote a macro in Javascript for use with KomodoEdit:

// access application object for the page
var appObj = ko.views.manager.currentView.scimoz;
// if nothing is selected, select everything
if (appObj.selText == '') {

var docText = appObj.selText; // get the text
var re; // var for regex

// get rid of lines that don't contain + symbol
// because the summary lines are the only ones we care about
re = new RegExp("^((?!\\+).)*$","gim");    
docText = docText.replace(re,'');

// get rid of multiple returns
re = new RegExp("^[\r\n]+","gim");  
docText = docText.replace(re,'\n');

// get rid of everything up to and including the + in summary lines
re = new RegExp("^-[^\\+]+\\+","gim");
docText = docText.replace(re, '');

// split the text, create second array, push 200 and over values
// onto second array, etc.  
var ary = docText.split('\n');
var total = 0;
var ary2 = [];
for (var i=0, imax=ary.length; i<imax; i++) {
    var n = ary[i].split(' ')[0];
    if (n && n != '') {         
        var targetNum = parseInt(n,10);
        if (targetNum > 199) {

// sort the qualifying days and put them in the text var
ary2 = ary2.sort();
docText = ary2.join('\n');

// Announce the result
alert("You have " + total + " days at or over the rep cap.");

// put the modified text back in the document, replacing what was there

(Feel free to use this if you like. It could easily be altered to create a GreaseMonkey script, etc.).

This macro accurately counts the number of days the rep score is 200 or more, and sorts them from lowest to highest. Using it I notice that the number of days AT 200 REP represents the exact discrepancy between the actual and reported values.

Now, to my way of thinking, a value of 200 qualifies as "at least 200" — or am I missing something? Obviously the system awards badges based on actual days 200 or over, and yet reports only days OVER 200.

Why does this discrepancy exist? Either words mean something or they don't, and I'd like an explanation of what is meant here by "at least".

[Note: Yes, I did rep recalc before running the script, etc. And, yes, I looked at other answers involving questions about rep-cap calculation, but none seemed to address this issue exactly.]

EDIT All better now. Or will be when the new build goes through. See @Nick Cravers's comment to the accepted answer.

1 Answer 1


That wording on the reputation audit page is new, I think since yesterday. It used to say:

rep cap was reached via rep from upvotes *only* on 0 days  
rep cap exceeded on 1 days

Which is even more confusing, because how can you exceed the rep cap but not reach it? And often the badge would be given when neither number was exactly 50, or 150.

Nick Craver finally answered that question here when he realized that the badges didn't actually care whether it was from upvotes or not. In fact it could have been any type of rep. This means the second number was more accurate (though not exactly, as you've realized).

So, given that course of events, it seems that the wording on the badges and on the audit page were both changed to say:

at least 200 reputation

but someone forgot to change the > to a >= in the reputation audit.

  • +1 for the last line alone.
    – Robusto
    Commented Apr 23, 2011 at 15:02
  • 2
    Yup, that was the case...and it's fixed for the next build, the code should now match the clarified descriptions. Commented Apr 23, 2011 at 15:07

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .