Procrastination, like other problems of self-improvement, is multilayered. Some of my friends who constantly agonize over their productivity levels confound me, because often from my vantage point they seem perfectly well adjusted, if not for the constant feeling like they should be doing more. Other times procrastination is a response to stress or trauma that needs to be addressed on its own. Some kinds of distraction are arguably more of a reflection of changes in our culture than individual pathologies. Sometimes you just need an egg timer. Sometimes human beings are just garden-variety imperfect.
At the risk of venturing in cheesy territory, I'd recommend checking out Brene Brown's TED talks on vulnerability and shame, if you're not already familiar with them.
http://www.ted.com/talks/brene_brown_listening_to_shame?lang...
http://digital.heartsintrueharmony.com/catalog/learningtolov...
The exercises will either feel very cheesy or move you to tears.
It was when I got into industry, and instead was posed with the equation of "If I didn't rush, I would have done better work, and more effectively used the time of the people paying me", which had enough external variables that the need to change became pressing. I used (and still use) the feelings of guilt at wasting my bosses time, the feelings of falling behind in my skill/learnings, and dominatingly (as I get older) the feeling of "There just isn't enough time in the day" to force myself off of procrastination every time I notice myself doing it too much.
Take this with the context that I've never been one for positive reinforcement. Seeing my own flaws and failings drives me far more than getting a pat on the back. I think you hit the nail on the head re: rationality, as that I don't think I _could_ forgive myself even if I tried, I wouldn't really internalize believing it in a way that would impact my behavior.
(And aptly, I've now procrastinated enough in writing this, and need to be back to reading docs :) )
In terms of motivating myself by negatives instead of positives, that's something I've put literally decades in trying to adjust and something I'm not sure I'll ever break myself of. It's too useful in other areas (looking critically at my own code, looking critically at problem spaces, being unbiased in introspection) that as with the OPs point of not truly internalizing something despite agreeing logically that "X should be this way", I'm not sure I could truly internalize looking at things in a positive light.
If I rationally decide to say "I forgive myself for having slacked off", I'm not sure I'll actually feel forgiven deep inside. I strongly suspect, however, that self-forgiveness can be difficult but can be practiced.
Does anyone here have experience to share? Did anyone ever consciously practice self-forgiveness? It seems like an interesting approach to me.