gameObject.renderer.isVisible = false for one frame after activation

Im working on a function to reset projectiles when they move off camera in my 2D iPhone space shooter. The function is called every frame.

function ResetOutOfBoundsProjectiles() // Resets projectile outside of the render area.
{
    for(i=0; i<maxNumProjectiles; i++)
    {
        if(projectilesArray_.active == true && !projectilesArray*.renderer.isVisible)*_
 _*{*_
 <em>_projectilesArray*.active = false;*_</em>
 <em><em>_projectilesArray*.transform.position = projectileIntPosition;*_</em></em>
 <em><em>_*projectilesInUse--;*_</em></em>
 <em><em>_*}*_</em></em>
 <em><em>_*}*_</em></em>
<em><em>_*}*_</em></em>
<em><em>_*```*_</em></em>
<em><em>_*<p>The problem i am having is that it seems the renderer.isVisible function seems to return false for one frame after is has been enabled, adfter the first frame it returns true as expected. This causes the projectile to be immediately reset the same frame its enabled. The weird thing is that this function worked perfectly earlier. Do anyone know why the gameobject would return false on renderer.isVisible on the first frame, and how i can fix it?</p>*_</em></em>

why not just use OnBecameInvisible?

var projectileIntPosition = ???;
var somemanagerobject : GameObject; 

function OnBecameInvisible() //ResetThisOutOfBoundsProjectile() // Put this script on each projectile (on the prefab)
{
    if(gameObject.active)
        {
            gameObject.active = false;
            gameObject.transform.position = projectileIntPosition;
            somemanagerobejct.getComponent(managerScript).SetUsedProjectiles(-1);
        }
    }
}