diff --git a/src/xercesc/util/Transcoders/MacOSUnicodeConverter/MacOSUnicodeConverter.cpp b/src/xercesc/util/Transcoders/MacOSUnicodeConverter/MacOSUnicodeConverter.cpp
index 3c4bea9e4db1bcd10e0fc6d46ed0902c1f38613e..fe176a361d6280953d4d88ce4d5982fe79db4201 100644
--- a/src/xercesc/util/Transcoders/MacOSUnicodeConverter/MacOSUnicodeConverter.cpp
+++ b/src/xercesc/util/Transcoders/MacOSUnicodeConverter/MacOSUnicodeConverter.cpp
@@ -655,13 +655,11 @@ MacOSTranscoder::transcodeFrom(  const  XMLByte* const			srcData
     	&bytesProduced,
     	reinterpret_cast<UniCharArrayPtr>(toFill));
 		
-	if (status == kTECUsedFallbacksStatus)
+	if (status == kTECOutputBufferFullStatus || status == kTECUsedFallbacksStatus)
 		status = noErr;
     	
     if (status != noErr)
-    {
         ThrowXML(TranscodingException, XMLExcepts::Trans_BadSrcSeq);
-    }
 	
 	std::size_t charsProduced = bytesProduced / sizeof(UniChar);
 	
@@ -773,14 +771,6 @@ MacOSTranscoder::transcodeTo(const  XMLCh* const    srcData
                 , getEncodingName()
             );
     	}
-    	
-    	// These were removed because we actually have succeeded in transcoding part of
-    	// the string; this logic should probably be changed to deal with non-transcodable
-    	// text somehow; if options != UnRep_Throw, and we zero these values, we get in
-    	// to an infinite loop and hang the machine
-    	
-    	//totalCharsConsumed = 0;
-    	//totalCharsProduced = 0;
     }
     	
     charsEaten = totalCharsConsumed;