Chance of
[Sundial of the Exiled] proc = 10% with 45 seconds of IC
(chance to not proc)^(x spell casts) = chance to not proc after x spell casts
(1-0.1)^x = 0.5
x = log0.5 / log0.90 ~= 6.5 spell casts on average to have a 50% chance to not proc
(i.e., after 6.5 spell casts, you're expected to have had a 50% chance to proc the trinket - so average proc is after 6.5 spells)
supposing you have an average of 1.1 second casting on wrath, 2.2 second casting on starfire, and 50/50 for cast time on both spells, then (1.1+2.2)/2 = 1.65 average cast time.
6.5*1.65 ~= 10.7 seconds average time to proc after IC -> expect to proc it every 55.7 seconds
proc lasts for 10 seconds, so we're expecting about (590)*(10/55.7) or average of 106 SP
[Sundial of the Exiled] ~=
84 crit + 106 SP
[Nevermelting Ice Crystal] already has 111 SP, so the SP upgrade is very minor over the Sundial.
If we were to suppose that NIC has 920 crit for 20 seconds every 3 minutes or 180 seconds (so take 1/9'th of the proc's worth for an average), then NIC has 102 average crit which is an up on sundial in this scenario. Unfortunately, this crit buff can only stay up at 920 for 20 seconds if you don't crit (assuming 1.2 sec uncrit wraths, 20/1.2 ~= 16.67 -> 0.5^16.67 ~= 0.0007% chance of not critting after 16.67 casts)
Using this during lunar eclipse is not generally recommended, so let's assume you use this as soon as you come out of lunar. Let us suppose you're a boomkin completely buffed at 34% on sheet, then 3% from pallies, 4% from talents, 4% from idol, 5% from mages/locks gives you about 50% crit chance for wrath.
I will attempt to calculate an average best case for this trinket.
The trinket gives 20% off the start, and -4% every crit -> so that means after 5 crits, we lose the buff. For now let's assume that the trinket gives a buff for 5 crits (ignoring the fact that the the trinket's proc is crit related). How many casts, on average, will it take take to consume the buff? Well Wrath crits for 50%, so there's an equal chance of critting or not critting.
Now I want to find n casts such that sum(C(k,5),k=5..n)/(2^n) = 0.5 (number of combinations of more than 4 crits out of n casts, over the set of all types of cast, and we want this to occur half the time so we choose this to be equal to 0.5). We find that n = 10 (proof is along the lines of realizing that half of all permutations of a set of 2*x, where the set can only contain hits or crit elements, are exactly the same as the other half).
So an average of 10 casts will clear the buff. Let us say our average wrath time is 1.1 second (for simplicity), we find that the buff lasts for 11 seconds. This part is kinda pulled out of my ass, but the average value of the buff inside this 11 second window is 920/2=460 (which I'm fairly confident is true).
So for an average of 11 seconds out of 20 seconds, you're getting about 460 crit -> (11/20)*(460) = 253 crit per proc. Since this proc occurs at best 1/9 of the time, we get 253*(1/9) ~= 28 crit
I considered this to be the best case for NIC because the buff actually reduces the average number of casts before it clears itself.
Conclusion? Well it seems to suck a lot. The above is merely an approximation of the best case for NIC, so there are bound to be better. But I was a bit skeptical... 28 crit on average seems to be a little weak.
So I decided to program something in c# to verify.

static void Main(string[] args)
{
Random r = new Random();
int totaltrials = 1000000;
int totalcrits = 0, totalcasts = 0;
int total_casts_before_proc_ends = 0;
for (int k = 0; k < totaltrials; k++)
{
double extracritvalue = .2;
double casttime = 0;
double naturesgracetimer = 0;
double roundcast = 0;
int timescritted = 0;
int numcasts = 0;
bool calculated_procs_end = false;
while (casttime < 18.8)
{
if (naturesgracetimer <= 0)
{
roundcast = 1.2;
}
else
{
roundcast = 1.0;
}
if (r.NextDouble() < 0.5 - extracritvalue) //did not crit
{
naturesgracetimer -= roundcast;
}
else
{
naturesgracetimer = 3;
timescritted++;
extracritvalue = Math.Max(extracritvalue - 0.04, 0);
if (extracritvalue < 0.01 && !calculated_procs_end)
{
total_casts_before_proc_ends += numcasts + 1;
calculated_procs_end = true;
}
}
numcasts++;
casttime += roundcast;
}
totalcrits += timescritted;
totalcasts += numcasts;
if (!calculated_procs_end)
total_casts_before_proc_ends += numcasts + 1;
//Console.WriteLine(Math.Round(timescritted * 1.0 / numcasts, 4));
}
Console.WriteLine("Percent Crit: " + Math.Round(totalcrits * 1.0 / totalcasts, 4) + " with average proc duration of " + total_casts_before_proc_ends * 1.0 / totaltrials + " spell casts.");
Console.ReadKey();
}
I first tested out the code so that it mimicked the trinket as a proc that doesn't modify crit, and I get the expected 50% crit with average of 10 spell casts before the proc dies.
The code above has values set so that the trinket actually affects the crit rating, and we get 54.94% crit (during the proc mind you) with an average of 8.13 spell casts before the proc dies.
4.94%/9 = 0.55% crit on average = 25.2 crit rating on average (which by the way is much less than 84 crit)
[Nevermelting Ice Crystal] ~=
25.2 crit + 111 SP