Reflexion problem

I’m using the routine at the end of this post to draw a reflexion. But I don’t know why sometimes the reflected objects dissapear. Could anyone help me??

double eqr[] = {0.0,-1.0, 0.0, 0.0}; // Plane Equation To Use For The Reflected Objects

glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);	
glEnable (GL_STENCIL_TEST );						// Enable Stencil Buffer For "marking" The Floor
glStencilFunc (GL_ALWAYS, 1, 0x1);					// Always Passes, 1 Bit Plane, 0x1 As Mask
glStencilOp (GL_KEEP, GL_KEEP, GL_REPLACE );		// We Set The Stencil Buffer To 1 Where We Draw Any Polygon
													// Keep If Test Fails, Keep If Test Passes But Buffer Test Fails
													// Replace If Test Passes
glDisable (GL_DEPTH_TEST);							// Disable Depth Testing
[suelo drawStencil:nil]; //DrawFloor();  //						// Draw The Floor (Draws To The Stencil Buffer)
													// We Only Want To Mark It In The Stencil Buffer
glEnable (GL_DEPTH_TEST);							// Enable Depth Testing

glColorMask (GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);	// Set Color Mask to true, true, true, true
glStencilFunc ( GL_EQUAL, 1, 0x1 );					// We Draw Only Where The Stencil Is 1
													// (I.E. Where The Floor Was Drawn)
glStencilOp (GL_KEEP, GL_KEEP, GL_KEEP);			// Don't Change The Stencil Buffer
glEnable (GL_CLIP_PLANE0);							// Enable Clip Plane For Removing Artifacts
													// (When The Object Crosses The Floor)
glClipPlane (GL_CLIP_PLANE0, eqr);					// Equation For Reflected Objects

enumerator = [objetos objectEnumerator];

while ((anObject = [enumerator nextObject])) 
	{
	Objeto* o = (Objeto*) anObject;
	glScalef( 1.0, -1.0, 1.0 );			// Da la vuelta a la figura para el reflejo
	[o draw];
	}
					
glDisable (GL_CLIP_PLANE0);				// Disable Clip Plane For Drawing The Floor
glDisable (GL_STENCIL_TEST);