diff -up assimp--2.0.863-sdk/code/ACLoader.cpp.fastatof assimp--2.0.863-sdk/code/ACLoader.cpp
--- assimp--2.0.863-sdk/code/ACLoader.cpp.fastatof	2011-03-22 12:50:18.223759084 -0400
+++ assimp--2.0.863-sdk/code/ACLoader.cpp	2011-03-22 12:57:56.949758999 -0400
@@ -199,7 +199,7 @@ void AC3DImporter::LoadObjectSection(std
 		if (TokenMatch(buffer,"kids",4))
 		{
 			SkipSpaces(&buffer);
-			unsigned int num = strtol10(buffer,&buffer);
+			unsigned int num = strtoul10(buffer,&buffer);
 			GetNextLine();
 			if (num)
 			{
@@ -252,7 +252,7 @@ void AC3DImporter::LoadObjectSection(std
 		else if (TokenMatch(buffer,"subdiv",6))
 		{
 			SkipSpaces(&buffer);
-			obj.subDiv = strtol10(buffer,&buffer);
+			obj.subDiv = strtoul10(buffer,&buffer);
 		}
 		else if (TokenMatch(buffer,"crease",6))
 		{
@@ -263,7 +263,7 @@ void AC3DImporter::LoadObjectSection(std
 		{
 			SkipSpaces(&buffer);
 
-			unsigned int t = strtol10(buffer,&buffer);
+			unsigned int t = strtoul10(buffer,&buffer);
 			obj.vertices.reserve(t);
 			for (unsigned int i = 0; i < t;++i)
 			{
@@ -289,7 +289,7 @@ void AC3DImporter::LoadObjectSection(std
 			
 			bool Q3DWorkAround = false;
 
-			const unsigned int t = strtol10(buffer,&buffer);
+			const unsigned int t = strtoul10(buffer,&buffer);
 			obj.surfaces.reserve(t);
 			for (unsigned int i = 0; i < t;++i)
 			{
@@ -311,7 +311,7 @@ void AC3DImporter::LoadObjectSection(std
 				SkipSpaces(&buffer);
 				obj.surfaces.push_back(Surface());
 				Surface& surf = obj.surfaces.back();
-				surf.flags = strtol_cppstyle(buffer);
+				surf.flags = strtoul_cppstyle(buffer);
 			
 				while (1)
 				{
@@ -323,7 +323,7 @@ void AC3DImporter::LoadObjectSection(std
 					if (TokenMatch(buffer,"mat",3))
 					{
 						SkipSpaces(&buffer);
-						surf.mat = strtol10(buffer);
+						surf.mat = strtoul10(buffer);
 					}
 					else if (TokenMatch(buffer,"refs",4))
 					{
@@ -338,7 +338,7 @@ void AC3DImporter::LoadObjectSection(std
 						}
 
 						SkipSpaces(&buffer);
-						const unsigned int m = strtol10(buffer);
+						const unsigned int m = strtoul10(buffer);
 						surf.entries.reserve(m);
 
 						obj.numRefs += m;
@@ -353,7 +353,7 @@ void AC3DImporter::LoadObjectSection(std
 							surf.entries.push_back(Surface::SurfaceEntry());
 							Surface::SurfaceEntry& entry = surf.entries.back();
 
-							entry.first = strtol10(buffer,&buffer);
+							entry.first = strtoul10(buffer,&buffer);
 							SkipSpaces(&buffer);
 							AI_AC_CHECKED_LOAD_FLOAT_ARRAY("",0,2,&entry.second);
 						}
diff -up assimp--2.0.863-sdk/code/ASEParser.cpp.fastatof assimp--2.0.863-sdk/code/ASEParser.cpp
--- assimp--2.0.863-sdk/code/ASEParser.cpp.fastatof	2011-03-22 12:58:18.762759015 -0400
+++ assimp--2.0.863-sdk/code/ASEParser.cpp	2011-03-22 12:58:58.858758986 -0400
@@ -1563,7 +1563,7 @@ void Parser::ParseLV4MeshBones(unsigned 
 				// parse an index ...
 				if(SkipSpaces(&filePtr))
 				{
-					unsigned int iIndex = strtol10(filePtr,&filePtr);
+					unsigned int iIndex = strtoul10(filePtr,&filePtr);
 					if (iIndex >= iNumBones)
 					{
 						continue;
@@ -1593,7 +1593,7 @@ void Parser::ParseLV4MeshBonesVertices(u
 			if (TokenMatch(filePtr,"MESH_BONE_VERTEX" ,16))
 			{
 				// read the vertex index
-				unsigned int iIndex = strtol10(filePtr,&filePtr);
+				unsigned int iIndex = strtoul10(filePtr,&filePtr);
 				if (iIndex >= mesh.mPositions.size())
 				{
 					iIndex = (unsigned int)mesh.mPositions.size()-1;
@@ -1610,7 +1610,7 @@ void Parser::ParseLV4MeshBonesVertices(u
 				{
 					// first parse the bone index ...
 					if (!SkipSpaces(&filePtr))break;
-					pairOut.first = strtol10(filePtr,&filePtr);
+					pairOut.first = strtoul10(filePtr,&filePtr);
 
 					// then parse the vertex weight
 					if (!SkipSpaces(&filePtr))break;
@@ -1951,7 +1951,7 @@ void Parser::ParseLV4MeshFace(ASE::Face&
 	}
 
 	// parse the face index
-	out.iFace = strtol10(filePtr,&filePtr);
+	out.iFace = strtoul10(filePtr,&filePtr);
 
 	// next character should be ':'
 	if(!SkipSpaces(&filePtr))
@@ -2012,7 +2012,7 @@ void Parser::ParseLV4MeshFace(ASE::Face&
 			SkipToNextToken();
 			return;
 		}
-		out.mIndices[iIndex] = strtol10(filePtr,&filePtr);
+		out.mIndices[iIndex] = strtoul10(filePtr,&filePtr);
 	}
 
 	// now we need to skip the AB, BC, CA blocks. 
@@ -2044,7 +2044,7 @@ void Parser::ParseLV4MeshFace(ASE::Face&
 		{
 			if (*filePtr < '9' && *filePtr >= '0')
 			{
-				out.iSmoothGroup |= (1 << strtol10(filePtr,&filePtr));
+				out.iSmoothGroup |= (1 << strtoul10(filePtr,&filePtr));
 			}
 			SkipSpaces(&filePtr);
 			if (',' != *filePtr)
@@ -2076,7 +2076,7 @@ void Parser::ParseLV4MeshFace(ASE::Face&
 			SkipToNextToken();
 			return;
 		}
-		out.iMaterial = strtol10(filePtr,&filePtr);
+		out.iMaterial = strtoul10(filePtr,&filePtr);
 	}
 	return;
 }
@@ -2146,5 +2146,5 @@ void Parser::ParseLV4MeshLong(unsigned i
 		return;
 	}
 	// parse the value
-	iOut = strtol10(filePtr,&filePtr);
+	iOut = strtoul10(filePtr,&filePtr);
 }
diff -up assimp--2.0.863-sdk/code/BlenderDNA.cpp.fastatof assimp--2.0.863-sdk/code/BlenderDNA.cpp
--- assimp--2.0.863-sdk/code/BlenderDNA.cpp.fastatof	2011-03-22 12:59:09.499759003 -0400
+++ assimp--2.0.863-sdk/code/BlenderDNA.cpp	2011-03-22 12:59:24.887759015 -0400
@@ -260,13 +260,13 @@ void DNA :: DumpToFile()
 	if (pos++ == std::string::npos) {
 		return;
 	}
-	array_sizes[0] = strtol10(&out[pos]);
+	array_sizes[0] = strtoul10(&out[pos]);
 
 	pos = out.find('[',pos);
 	if (pos++ == std::string::npos) {
 		return;
 	}
-	array_sizes[1] = strtol10(&out[pos]);
+	array_sizes[1] = strtoul10(&out[pos]);
 }
 
 // ------------------------------------------------------------------------------------------------
diff -up assimp--2.0.863-sdk/code/COBLoader.cpp.fastatof assimp--2.0.863-sdk/code/COBLoader.cpp
--- assimp--2.0.863-sdk/code/COBLoader.cpp.fastatof	2011-03-22 12:59:34.539758996 -0400
+++ assimp--2.0.863-sdk/code/COBLoader.cpp	2011-03-22 13:11:01.585759000 -0400
@@ -440,9 +440,9 @@ void COBImporter::ReadChunkInfo_Ascii(Ch
 	splitter.get_tokens(all_tokens);
 
 	out.version = (all_tokens[1][1]-'0')*100+(all_tokens[1][3]-'0')*10+(all_tokens[1][4]-'0');
-	out.id	= strtol10(all_tokens[3]);
-	out.parent_id = strtol10(all_tokens[5]);
-	out.size = strtol10s(all_tokens[7]);
+	out.id	= strtoul10(all_tokens[3]);
+	out.parent_id = strtoul10(all_tokens[5]);
+	out.size = strtol10(all_tokens[7]);
 }
 
 // ------------------------------------------------------------------------------------------------
@@ -563,7 +563,7 @@ void COBImporter::ReadMat1_Ascii(Scene& 
 	Material& mat = out.materials.back();
 	mat = nfo;
 
-	mat.matnum = strtol10(splitter[1]);
+	mat.matnum = strtoul10(splitter[1]);
 	++splitter;
 
 	if (!splitter.match_start("shader: ")) {
@@ -627,7 +627,7 @@ void COBImporter::ReadUnit_Ascii(Scene& 
 	// corresponding chunk already.
 	for_each(boost::shared_ptr< Node >& nd, out.nodes) {
 		if (nd->id == nfo.parent_id) {
-			const unsigned int t=strtol10(splitter[1]);
+			const unsigned int t=strtoul10(splitter[1]);
 		
 			nd->unit_scale = t>=sizeof(units)/sizeof(units[0])?(
 				LogWarn_Ascii(splitter,format()<<t<<" is not a valid value for `Units` attribute in `Unit chunk` "<<nfo.id)
@@ -769,7 +769,7 @@ void COBImporter::ReadPolH_Ascii(Scene& 
 	// either the last `Face` or the `DrawFlags` attribute, depending on the format ver.
 	for(;splitter;++splitter) {
 		if (splitter.match_start("World Vertices")) {
-			const unsigned int cnt = strtol10(splitter[2]);
+			const unsigned int cnt = strtoul10(splitter[2]);
 			msh.vertex_positions.resize(cnt);
 
 			for(unsigned int cur = 0;cur < cnt && ++splitter;++cur) {
@@ -786,7 +786,7 @@ void COBImporter::ReadPolH_Ascii(Scene& 
 			}
 		}
 		else if (splitter.match_start("Texture Vertices")) {
-			const unsigned int cnt = strtol10(splitter[2]);
+			const unsigned int cnt = strtoul10(splitter[2]);
 			msh.texture_coords.resize(cnt);
 
 			for(unsigned int cur = 0;cur < cnt && ++splitter;++cur) {
@@ -801,7 +801,7 @@ void COBImporter::ReadPolH_Ascii(Scene& 
 			}
 		}
 		else if (splitter.match_start("Faces")) {
-			const unsigned int cnt = strtol10(splitter[1]);
+			const unsigned int cnt = strtoul10(splitter[1]);
 			msh.faces.reserve(cnt);
 
 			for(unsigned int cur = 0; cur < cnt && ++splitter ;++cur) {
@@ -817,9 +817,9 @@ void COBImporter::ReadPolH_Ascii(Scene& 
 				msh.faces.push_back(Face());
 				Face& face = msh.faces.back();
 
-				face.indices.resize(strtol10(splitter[2]));
-				face.flags = strtol10(splitter[4]);
-				face.material = strtol10(splitter[6]);
+				face.indices.resize(strtoul10(splitter[2]));
+				face.flags = strtoul10(splitter[4]);
+				face.material = strtoul10(splitter[6]);
 
 				const char* s = (++splitter)->c_str();
 				for(size_t i = 0; i < face.indices.size(); ++i) {
@@ -829,11 +829,11 @@ void COBImporter::ReadPolH_Ascii(Scene& 
 					if ('<' != *s++) {
 						ThrowException("Expected < token in Face entry");
 					}
-					face.indices[i].pos_idx = strtol10(s,&s);
+					face.indices[i].pos_idx = strtoul10(s,&s);
 					if (',' != *s++) {
 						ThrowException("Expected , token in Face entry");
 					}
-					face.indices[i].uv_idx = strtol10(s,&s);
+					face.indices[i].uv_idx = strtoul10(s,&s);
 					if ('>' != *s++) {
 						ThrowException("Expected < token in Face entry");
 					}
@@ -844,7 +844,7 @@ void COBImporter::ReadPolH_Ascii(Scene& 
 			}
 		}
 		else if (splitter.match_start("DrawFlags")) {
-			msh.draw_flags = strtol10(splitter[1]);
+			msh.draw_flags = strtoul10(splitter[1]);
 			break;
 		}
 	}
@@ -864,7 +864,7 @@ void COBImporter::ReadBitM_Ascii(Scene& 
 	"\nZippedThumbnail: %02hx 02hx %02hx "
 */
 
-	const unsigned int head = strtol10((++splitter)[1]);
+	const unsigned int head = strtoul10((++splitter)[1]);
 	if (head != sizeof(Bitmap::BitmapHeader)) {
 		LogWarn_Ascii(splitter,"Unexpected ThumbNailHdrSize, skipping this chunk");
 		return;
diff -up assimp--2.0.863-sdk/code/ColladaLoader.cpp.fastatof assimp--2.0.863-sdk/code/ColladaLoader.cpp
--- assimp--2.0.863-sdk/code/ColladaLoader.cpp.fastatof	2011-03-22 13:00:57.539758925 -0400
+++ assimp--2.0.863-sdk/code/ColladaLoader.cpp	2011-03-22 13:01:16.647759001 -0400
@@ -1166,7 +1166,7 @@ void ColladaLoader::AddTexture ( Assimp:
 		map = -1;
 		for (std::string::const_iterator it = sampler.mUVChannel.begin();it != sampler.mUVChannel.end(); ++it){
 			if (IsNumeric(*it)) {
-				map = strtol10(&(*it));
+				map = strtoul10(&(*it));
 				break;
 			}
 		}
diff -up assimp--2.0.863-sdk/code/ColladaParser.cpp.fastatof assimp--2.0.863-sdk/code/ColladaParser.cpp
--- assimp--2.0.863-sdk/code/ColladaParser.cpp.fastatof	2011-03-22 13:01:27.772759000 -0400
+++ assimp--2.0.863-sdk/code/ColladaParser.cpp	2011-03-22 13:11:08.254759002 -0400
@@ -639,7 +639,7 @@ void ColladaParser::ReadControllerWeight
 					if( *text == 0)
 						ThrowException( "Out of data while reading vcount");
 
-					*it = strtol10( text, &text);
+					*it = strtoul10( text, &text);
 					numWeights += *it;
 					SkipSpacesAndLineEnd( &text);
 				}
@@ -658,11 +658,11 @@ void ColladaParser::ReadControllerWeight
 				{
 					if( *text == 0)
 						ThrowException( "Out of data while reading vertex_weights");
-					it->first = strtol10( text, &text);
+					it->first = strtoul10( text, &text);
 					SkipSpacesAndLineEnd( &text);
 					if( *text == 0)
 						ThrowException( "Out of data while reading vertex_weights");
-					it->second = strtol10( text, &text);
+					it->second = strtoul10( text, &text);
 					SkipSpacesAndLineEnd( &text);
 				}
 
@@ -1888,7 +1888,7 @@ void ColladaParser::ReadIndexData( Mesh*
 						if( *content == 0)
 							ThrowException( "Expected more values while reading vcount contents.");
 						// read a number
-						vcount.push_back( (size_t) strtol10( content, &content));
+						vcount.push_back( (size_t) strtoul10( content, &content));
 						// skip whitespace after it
 						SkipSpacesAndLineEnd( &content);
 					}
@@ -2008,7 +2008,7 @@ void ColladaParser::ReadPrimitives( Mesh
 	{
 		// read a value. 
     // Hack: (thom) Some exporters put negative indices sometimes. We just try to carry on anyways.
-    int value = std::max( 0, strtol10s( content, &content));
+    int value = std::max( 0, strtol10( content, &content));
 		indices.push_back( size_t( value));
 		// skip whitespace after it
 		SkipSpacesAndLineEnd( &content);
diff -up assimp--2.0.863-sdk/code/CSMLoader.cpp.fastatof assimp--2.0.863-sdk/code/CSMLoader.cpp
--- assimp--2.0.863-sdk/code/CSMLoader.cpp.fastatof	2011-03-22 13:01:42.823758987 -0400
+++ assimp--2.0.863-sdk/code/CSMLoader.cpp	2011-03-22 13:11:16.544759001 -0400
@@ -126,11 +126,11 @@ void CSMImporter::InternReadFile( const 
 			++buffer;
 			if (TokenMatchI(buffer,"firstframe",10))	{
 				SkipSpaces(&buffer);
-				first = strtol10s(buffer,&buffer);
+				first = strtol10(buffer,&buffer);
 			}
 			else if (TokenMatchI(buffer,"lastframe",9))		{
 				SkipSpaces(&buffer);
-				last = strtol10s(buffer,&buffer);
+				last = strtol10(buffer,&buffer);
 			}
 			else if (TokenMatchI(buffer,"rate",4))	{
 				SkipSpaces(&buffer);
@@ -190,7 +190,7 @@ void CSMImporter::InternReadFile( const 
 					}
 
 					// read frame
-					const int frame = ::strtol10(buffer,&buffer);
+					const int frame = ::strtoul10(buffer,&buffer);
 					last  = std::max(frame,last);
 					first = std::min(frame,last);
 					for (unsigned int i = 0; i < anim->mNumChannels;++i)	{
diff -up assimp--2.0.863-sdk/code/DXFLoader.cpp.fastatof assimp--2.0.863-sdk/code/DXFLoader.cpp
--- assimp--2.0.863-sdk/code/DXFLoader.cpp.fastatof	2011-03-22 13:02:02.973759113 -0400
+++ assimp--2.0.863-sdk/code/DXFLoader.cpp	2011-03-22 13:11:23.282759000 -0400
@@ -140,7 +140,7 @@ bool DXFImporter::GetNextToken()
 	}
 
 	SkipSpaces(&buffer);
-	groupCode = strtol10s(buffer,&buffer);
+	groupCode = strtol10(buffer,&buffer);
 	if(!GetNextLine())
 		return false;
 	
@@ -417,7 +417,7 @@ bool DXFImporter::ParsePolyLine()
 		case 70:
 			{
 				if (!flags)	{
-					flags = strtol10(cursor);
+					flags = strtoul10(cursor);
 				}
 				break;
 			};
@@ -425,14 +425,14 @@ bool DXFImporter::ParsePolyLine()
 		// optional number of vertices
 		case 71:
 			{
-				positions.reserve(strtol10(cursor));
+				positions.reserve(strtoul10(cursor));
 				break;
 			}
 
 		// optional number of faces
 		case 72:
 			{
-				indices.reserve(strtol10(cursor));
+				indices.reserve(strtoul10(cursor));
 				break;
 			}
 
@@ -500,13 +500,13 @@ bool DXFImporter::ParsePolyLineVertex(ai
 		case 30: out.z = fast_atof(cursor);break;
 
 		// POLYFACE vertex indices
-		case 71: outIdx[0] = strtol10(cursor);break;
-		case 72: outIdx[1] = strtol10(cursor);break;
-		case 73: outIdx[2] = strtol10(cursor);break;
-	//	case 74: outIdx[3] = strtol10(cursor);break;
+		case 71: outIdx[0] = strtoul10(cursor);break;
+		case 72: outIdx[1] = strtoul10(cursor);break;
+		case 73: outIdx[2] = strtoul10(cursor);break;
+	//	case 74: outIdx[3] = strtoul10(cursor);break;
 
 		// color
-		case 62: clr = g_aclrDxfIndexColors[strtol10(cursor) % AI_DXF_NUM_INDEX_COLORS]; break;
+		case 62: clr = g_aclrDxfIndexColors[strtoul10(cursor) % AI_DXF_NUM_INDEX_COLORS]; break;
 		};
 		if (ret) {
 			break;
@@ -582,7 +582,7 @@ bool DXFImporter::Parse3DFace()
 			bThird = true;break;
 
 		// color
-		case 62: clr = g_aclrDxfIndexColors[strtol10(cursor) % AI_DXF_NUM_INDEX_COLORS]; break;
+		case 62: clr = g_aclrDxfIndexColors[strtoul10(cursor) % AI_DXF_NUM_INDEX_COLORS]; break;
 		};
 		if (ret)
 			break;
diff -up assimp--2.0.863-sdk/code/IRRLoader.cpp.fastatof assimp--2.0.863-sdk/code/IRRLoader.cpp
--- assimp--2.0.863-sdk/code/IRRLoader.cpp.fastatof	2011-03-22 13:02:23.766759006 -0400
+++ assimp--2.0.863-sdk/code/IRRLoader.cpp	2011-03-22 13:02:28.569759002 -0400
@@ -1074,7 +1074,7 @@ void IRRImporter::InternReadFile( const 
 
 										// and parse its properties
 										key.mValue = prop.value;
-										key.mTime  = strtol10(&prop.name[5]);
+										key.mTime  = strtoul10(&prop.name[5]);
 									}
 								}
 								else if (curAnim->type == Animator::FLY_CIRCLE)	{
diff -up assimp--2.0.863-sdk/code/IRRMeshLoader.cpp.fastatof assimp--2.0.863-sdk/code/IRRMeshLoader.cpp
--- assimp--2.0.863-sdk/code/IRRMeshLoader.cpp.fastatof	2011-03-22 12:48:44.866759259 -0400
+++ assimp--2.0.863-sdk/code/IRRMeshLoader.cpp	2011-03-22 13:03:10.595759001 -0400
@@ -321,7 +321,7 @@ void IRRMeshImporter::InternReadFile( co
 					curNormals.push_back(temp);
 
 					// read the vertex colors
-					uint32_t clr = strtol16(sz,&sz);	
+					uint32_t clr = strtoul16(sz,&sz);	
 					ColorFromARGBPacked(clr,c);
 
 					if (!curColors.empty() && c != *(curColors.end()-1))
@@ -412,7 +412,7 @@ void IRRMeshImporter::InternReadFile( co
 						curFace->mIndices = new unsigned int[3];
 					}
 
-					unsigned int idx = strtol10(sz,&sz);
+					unsigned int idx = strtoul10(sz,&sz);
 					if (idx >= curVertices.size())	{
 						DefaultLogger::get()->error("IRRMESH: Index out of range");
 						idx = 0;
diff -up assimp--2.0.863-sdk/code/IRRShared.cpp.fastatof assimp--2.0.863-sdk/code/IRRShared.cpp
--- assimp--2.0.863-sdk/code/IRRShared.cpp.fastatof	2011-03-22 12:49:27.613759017 -0400
+++ assimp--2.0.863-sdk/code/IRRShared.cpp	2011-03-22 12:52:04.792759007 -0400
@@ -74,7 +74,7 @@ void IrrlichtBase::ReadHexProperty    (H
 		else if (!ASSIMP_stricmp(reader->getAttributeName(i),"value"))
 		{
 			// parse the hexadecimal value
-			out.value = strtol16(reader->getAttributeValue(i));
+			out.value = strtoul16(reader->getAttributeValue(i));
 		}
 	}
 }
@@ -92,7 +92,7 @@ void IrrlichtBase::ReadIntProperty    (I
 		else if (!ASSIMP_stricmp(reader->getAttributeName(i),"value"))
 		{
 			// parse the ecimal value
-			out.value = strtol10s(reader->getAttributeValue(i));
+			out.value = strtol10(reader->getAttributeValue(i));
 		}
 	}
 }
diff -up assimp--2.0.863-sdk/code/LWSLoader.cpp.fastatof assimp--2.0.863-sdk/code/LWSLoader.cpp
--- assimp--2.0.863-sdk/code/LWSLoader.cpp.fastatof	2011-03-22 12:47:18.221758995 -0400
+++ assimp--2.0.863-sdk/code/LWSLoader.cpp	2011-03-22 13:04:00.242759002 -0400
@@ -178,7 +178,7 @@ void LWSImporter::ReadEnvelope(const LWS
 
 	// reserve enough storage
 	std::list< LWS::Element >::const_iterator it = dad.children.begin();;
-	fill.keys.reserve(strtol10(it->tokens[1].c_str()));
+	fill.keys.reserve(strtoul10(it->tokens[1].c_str()));
 
 	for (++it; it != dad.children.end(); ++it) {
 		const char* c = (*it).tokens[1].c_str();
@@ -195,7 +195,7 @@ void LWSImporter::ReadEnvelope(const LWS
 
 			key.time = f;
 
-			unsigned int span = strtol10(c,&c), num = 0;
+			unsigned int span = strtoul10(c,&c), num = 0;
 			switch (span) {
 			
 				case 0:
@@ -229,9 +229,9 @@ void LWSImporter::ReadEnvelope(const LWS
 		}
 		else if ((*it).tokens[0] == "Behaviors") {
 			SkipSpaces(&c);
-			fill.pre = (LWO::PrePostBehaviour) strtol10(c,&c);
+			fill.pre = (LWO::PrePostBehaviour) strtoul10(c,&c);
 			SkipSpaces(&c);
-			fill.post = (LWO::PrePostBehaviour) strtol10(c,&c);
+			fill.post = (LWO::PrePostBehaviour) strtoul10(c,&c);
 		}
 	}
 }
@@ -247,7 +247,7 @@ void LWSImporter::ReadEnvelope_Old(
 	unsigned int num,sub_num;
 	if (++it == end)goto unexpected_end;
 
-	num = strtol10((*it).tokens[0].c_str());
+	num = strtoul10((*it).tokens[0].c_str());
 	for (unsigned int i = 0; i < num; ++i) {
 	
 		nodes.channels.push_back(LWO::Envelope());
@@ -257,7 +257,7 @@ void LWSImporter::ReadEnvelope_Old(
 		envl.type  = (LWO::EnvelopeType)(i+1);
 	
 		if (++it == end)goto unexpected_end;
-		sub_num = strtol10((*it).tokens[0].c_str());
+		sub_num = strtoul10((*it).tokens[0].c_str());
 
 		for (unsigned int n = 0; n < sub_num;++n) {
 
@@ -505,7 +505,7 @@ void LWSImporter::InternReadFile( const 
 
 	// get file format version and print to log
 	++it;
-	unsigned int version = strtol10((*it).tokens[0].c_str());
+	unsigned int version = strtoul10((*it).tokens[0].c_str());
 	DefaultLogger::get()->info("LWS file format version is " + (*it).tokens[0]);
 	first = 0.;
 	last  = 60.;
@@ -518,25 +518,25 @@ void LWSImporter::InternReadFile( const 
 		// 'FirstFrame': begin of animation slice
 		if ((*it).tokens[0] == "FirstFrame") {
 			if (150392. != first           /* see SetupProperties() */)
-				first = strtol10(c,&c)-1.; /* we're zero-based */
+				first = strtoul10(c,&c)-1.; /* we're zero-based */
 		}
 
 		// 'LastFrame': end of animation slice
 		else if ((*it).tokens[0] == "LastFrame") {
 			if (150392. != last      /* see SetupProperties() */)
-				last = strtol10(c,&c)-1.; /* we're zero-based */
+				last = strtoul10(c,&c)-1.; /* we're zero-based */
 		}
 
 		// 'FramesPerSecond': frames per second
 		else if ((*it).tokens[0] == "FramesPerSecond") {
-			fps = strtol10(c,&c);
+			fps = strtoul10(c,&c);
 		}
 
 		// 'LoadObjectLayer': load a layer of a specific LWO file
 		else if ((*it).tokens[0] == "LoadObjectLayer") {
 
 			// get layer index
-			const int layer = strtol10(c,&c);
+			const int layer = strtoul10(c,&c);
 
 			// setup the layer to be loaded
 			BatchLoader::PropertyMap props;
@@ -547,7 +547,7 @@ void LWSImporter::InternReadFile( const 
 			d.type = LWS::NodeDesc::OBJECT;
 			if (version >= 4) { // handle LWSC 4 explicit ID
 				SkipSpaces(&c);
-				d.number = strtol16(c,&c) & AI_LWS_MASK;
+				d.number = strtoul16(c,&c) & AI_LWS_MASK;
 			}
 			else d.number = cur_object++;
 
@@ -568,7 +568,7 @@ void LWSImporter::InternReadFile( const 
 			d.type = LWS::NodeDesc::OBJECT;
 			
 			if (version >= 4) { // handle LWSC 4 explicit ID
-				d.number = strtol16(c,&c) & AI_LWS_MASK;
+				d.number = strtoul16(c,&c) & AI_LWS_MASK;
 				SkipSpaces(&c);
 			}
 			else d.number = cur_object++;
@@ -587,7 +587,7 @@ void LWSImporter::InternReadFile( const 
 			d.type = LWS::NodeDesc::OBJECT;
 			d.name = c;
 			if (version >= 4) { // handle LWSC 4 explicit ID
-				d.number = strtol16(c,&c) & AI_LWS_MASK;
+				d.number = strtoul16(c,&c) & AI_LWS_MASK;
 			}
 			else d.number = cur_object++;
 			nodes.push_back(d);
@@ -617,7 +617,7 @@ void LWSImporter::InternReadFile( const 
 			nodes.back().channels.push_back(LWO::Envelope());
 			LWO::Envelope& env = nodes.back().channels.back();
 			
-			env.index = strtol10(c);
+			env.index = strtoul10(c);
 
 			// currently we can just interpret the standard channels 0...9
 			// (hack) assume that index-i yields the binary channel type from LWO
@@ -651,8 +651,8 @@ void LWSImporter::InternReadFile( const 
 				for (std::list<LWO::Envelope>::iterator it = nodes.back().channels.begin(); it != nodes.back().channels.end(); ++it) {
 					// two ints per envelope
 					LWO::Envelope& env = *it;
-					env.pre  = (LWO::PrePostBehaviour) strtol10(c,&c); SkipSpaces(&c);
-					env.post = (LWO::PrePostBehaviour) strtol10(c,&c); SkipSpaces(&c);
+					env.pre  = (LWO::PrePostBehaviour) strtoul10(c,&c); SkipSpaces(&c);
+					env.post = (LWO::PrePostBehaviour) strtoul10(c,&c); SkipSpaces(&c);
 				}
 			}
 		}
@@ -661,7 +661,7 @@ void LWSImporter::InternReadFile( const 
 			if (nodes.empty())
 				DefaultLogger::get()->error("LWS: Unexpected keyword: \'ParentItem\'");
 
-			else nodes.back().parent = strtol16(c,&c);
+			else nodes.back().parent = strtoul16(c,&c);
 		}
 		// 'ParentObject': deprecated one for older formats
 		else if (version < 3 && (*it).tokens[0] == "ParentObject") {
@@ -669,7 +669,7 @@ void LWSImporter::InternReadFile( const 
 				DefaultLogger::get()->error("LWS: Unexpected keyword: \'ParentObject\'");
 
 			else { 
-				nodes.back().parent = strtol10(c,&c) | (1u << 28u);
+				nodes.back().parent = strtoul10(c,&c) | (1u << 28u);
 			}
 		}
 		// 'AddCamera': add a camera to the scenegraph
@@ -680,7 +680,7 @@ void LWSImporter::InternReadFile( const 
 			d.type = LWS::NodeDesc::CAMERA;
 
 			if (version >= 4) { // handle LWSC 4 explicit ID
-				d.number = strtol16(c,&c) & AI_LWS_MASK;
+				d.number = strtoul16(c,&c) & AI_LWS_MASK;
 			}
 			else d.number = cur_camera++;
 			nodes.push_back(d);
@@ -702,7 +702,7 @@ void LWSImporter::InternReadFile( const 
 			d.type = LWS::NodeDesc::LIGHT;
 
 			if (version >= 4) { // handle LWSC 4 explicit ID
-				d.number = strtol16(c,&c) & AI_LWS_MASK;
+				d.number = strtoul16(c,&c) & AI_LWS_MASK;
 			}
 			else d.number = cur_light++;
 			nodes.push_back(d);
@@ -729,7 +729,7 @@ void LWSImporter::InternReadFile( const 
 			if (nodes.empty() || nodes.back().type != LWS::NodeDesc::LIGHT)
 				DefaultLogger::get()->error("LWS: Unexpected keyword: \'LightType\'");
 
-			else nodes.back().lightType = strtol10(c);
+			else nodes.back().lightType = strtoul10(c);
 			
 		}
 		// 'LightFalloffType': set falloff type of currently active light
@@ -737,7 +737,7 @@ void LWSImporter::InternReadFile( const 
 			if (nodes.empty() || nodes.back().type != LWS::NodeDesc::LIGHT)
 				DefaultLogger::get()->error("LWS: Unexpected keyword: \'LightFalloffType\'");
 
-			else nodes.back().lightFalloffType = strtol10(c);
+			else nodes.back().lightFalloffType = strtoul10(c);
 			
 		}
 		// 'LightConeAngle': set cone angle of currently active light
diff -up assimp--2.0.863-sdk/code/MaterialSystem.cpp.fastatof assimp--2.0.863-sdk/code/MaterialSystem.cpp
--- assimp--2.0.863-sdk/code/MaterialSystem.cpp.fastatof	2011-03-22 12:51:17.410759006 -0400
+++ assimp--2.0.863-sdk/code/MaterialSystem.cpp	2011-03-22 12:51:44.551759140 -0400
@@ -210,7 +210,7 @@ aiReturn aiGetMaterialIntegerArray(const
 		const char* cur =  prop->mData+4;
 		ai_assert(prop->mDataLength>=5 && !prop->mData[prop->mDataLength-1]);
 		for (unsigned int a = 0; ;++a) {	
-			pOut[a] = strtol10s(cur,&cur);
+			pOut[a] = strtol10(cur,&cur);
 			if(a==iWrite-1) {
 				break;
 			}
diff -up assimp--2.0.863-sdk/code/MD5Parser.cpp.fastatof assimp--2.0.863-sdk/code/MD5Parser.cpp
--- assimp--2.0.863-sdk/code/MD5Parser.cpp.fastatof	2011-03-22 13:04:20.583759004 -0400
+++ assimp--2.0.863-sdk/code/MD5Parser.cpp	2011-03-22 13:11:30.208759001 -0400
@@ -115,7 +115,7 @@ void MD5Parser::ParseHeader()
 		ReportError("Invalid MD5 file: MD5Version tag has not been found");
 	}
 	SkipSpaces();
-	unsigned int iVer = ::strtol10(buffer,(const char**)&buffer);
+	unsigned int iVer = ::strtoul10(buffer,(const char**)&buffer);
 	if (10 != iVer)	{
 		ReportError("MD5 version tag is unknown (10 is expected)");
 	}
@@ -234,10 +234,10 @@ MD5MeshParser::MD5MeshParser(SectionList
 	// now parse all sections
 	for (SectionList::const_iterator iter =  mSections.begin(), iterEnd = mSections.end();iter != iterEnd;++iter){
 		if ( (*iter).mName == "numMeshes")	{
-			mMeshes.reserve(::strtol10((*iter).mGlobalValue.c_str()));
+			mMeshes.reserve(::strtoul10((*iter).mGlobalValue.c_str()));
 		}
 		else if ( (*iter).mName == "numJoints")	{
-			mJoints.reserve(::strtol10((*iter).mGlobalValue.c_str()));
+			mJoints.reserve(::strtoul10((*iter).mGlobalValue.c_str()));
 		}
 		else if ((*iter).mName == "joints")	{
 			// "origin"	-1 ( -0.000000 0.016430 -0.006044 ) ( 0.707107 0.000000 0.707107 )
@@ -250,7 +250,7 @@ MD5MeshParser::MD5MeshParser(SectionList
 				AI_MD5_SKIP_SPACES();
 
 				// negative values, at least -1, is allowed here
-				desc.mParentIndex = (int)strtol10s(sz,&sz);
+				desc.mParentIndex = (int)strtol10(sz,&sz);
 		
 				AI_MD5_READ_TRIPLE(desc.mPositionXYZ);
 				AI_MD5_READ_TRIPLE(desc.mRotationQuat); // normalized quaternion, so w is not there
@@ -271,23 +271,23 @@ MD5MeshParser::MD5MeshParser(SectionList
 				// numverts attribute
 				else if (TokenMatch(sz,"numverts",8))	{
 					AI_MD5_SKIP_SPACES();
-					desc.mVertices.resize(strtol10(sz));
+					desc.mVertices.resize(strtoul10(sz));
 				}
 				// numtris attribute
 				else if (TokenMatch(sz,"numtris",7))	{
 					AI_MD5_SKIP_SPACES();
-					desc.mFaces.resize(strtol10(sz));
+					desc.mFaces.resize(strtoul10(sz));
 				}
 				// numweights attribute
 				else if (TokenMatch(sz,"numweights",10))	{
 					AI_MD5_SKIP_SPACES();
-					desc.mWeights.resize(strtol10(sz));
+					desc.mWeights.resize(strtoul10(sz));
 				}
 				// vert attribute
 				// "vert 0 ( 0.394531 0.513672 ) 0 1"
 				else if (TokenMatch(sz,"vert",4))	{
 					AI_MD5_SKIP_SPACES();
-					const unsigned int idx = ::strtol10(sz,&sz);
+					const unsigned int idx = ::strtoul10(sz,&sz);
 					AI_MD5_SKIP_SPACES();
 					if (idx >= desc.mVertices.size())
 						desc.mVertices.resize(idx+1);
@@ -303,15 +303,15 @@ MD5MeshParser::MD5MeshParser(SectionList
 					if (')' != *sz++)
 						MD5Parser::ReportWarning("Unexpected token: ) was expected",(*eit).iLineNumber);
 					AI_MD5_SKIP_SPACES();
-					vert.mFirstWeight = ::strtol10(sz,&sz);
+					vert.mFirstWeight = ::strtoul10(sz,&sz);
 					AI_MD5_SKIP_SPACES();
-					vert.mNumWeights = ::strtol10(sz,&sz);
+					vert.mNumWeights = ::strtoul10(sz,&sz);
 				}
 				// tri attribute
 				// "tri 0 15 13 12"
 				else if (TokenMatch(sz,"tri",3)) {
 					AI_MD5_SKIP_SPACES();
-					const unsigned int idx = strtol10(sz,&sz);
+					const unsigned int idx = strtoul10(sz,&sz);
 					if (idx >= desc.mFaces.size())
 						desc.mFaces.resize(idx+1);
 
@@ -319,20 +319,20 @@ MD5MeshParser::MD5MeshParser(SectionList
 					face.mIndices = new unsigned int[face.mNumIndices = 3];
 					for (unsigned int i = 0; i < 3;++i)	{
 						AI_MD5_SKIP_SPACES();
-						face.mIndices[i] = strtol10(sz,&sz);
+						face.mIndices[i] = strtoul10(sz,&sz);
 					}
 				}
 				// weight attribute
 				// "weight 362 5 0.500000 ( -3.553583 11.893474 9.719339 )"
 				else if (TokenMatch(sz,"weight",6))	{
 					AI_MD5_SKIP_SPACES();
-					const unsigned int idx = strtol10(sz,&sz);
+					const unsigned int idx = strtoul10(sz,&sz);
 					AI_MD5_SKIP_SPACES();
 					if (idx >= desc.mWeights.size())
 						desc.mWeights.resize(idx+1);
 
 					WeightDesc& weight = desc.mWeights[idx];	
-					weight.mBone = strtol10(sz,&sz);
+					weight.mBone = strtoul10(sz,&sz);
 					AI_MD5_SKIP_SPACES();
 					sz = fast_atof_move(sz,weight.mWeight);
 					AI_MD5_READ_TRIPLE(weight.vOffsetPosition);
@@ -363,17 +363,17 @@ MD5AnimParser::MD5AnimParser(SectionList
 				AI_MD5_SKIP_SPACES();
 
 				// parent index - negative values are allowed (at least -1)
-				desc.mParentIndex = ::strtol10s(sz,&sz);
+				desc.mParentIndex = ::strtol10(sz,&sz);
 
 				// flags (highest is 2^6-1)
 				AI_MD5_SKIP_SPACES();
-				if(63 < (desc.iFlags = ::strtol10(sz,&sz))){
+				if(63 < (desc.iFlags = ::strtoul10(sz,&sz))){
 					MD5Parser::ReportWarning("Invalid flag combination in hierarchy section",(*eit).iLineNumber);
 				}
 				AI_MD5_SKIP_SPACES();
 
 				// index of the first animation keyframe component for this joint
-				desc.iFirstKeyIndex = ::strtol10(sz,&sz);
+				desc.iFirstKeyIndex = ::strtoul10(sz,&sz);
 			}
 		}
 		else if((*iter).mName == "baseframe")	{
@@ -396,7 +396,7 @@ MD5AnimParser::MD5AnimParser(SectionList
 
 			mFrames.push_back ( FrameDesc () );
 			FrameDesc& desc = mFrames.back();
-			desc.iIndex = strtol10((*iter).mGlobalValue.c_str());
+			desc.iIndex = strtoul10((*iter).mGlobalValue.c_str());
 
 			// we do already know how much storage we will presumably need
 			if (0xffffffff != mNumAnimatedComponents)
@@ -412,10 +412,10 @@ MD5AnimParser::MD5AnimParser(SectionList
 			}
 		}
 		else if((*iter).mName == "numFrames")	{
-			mFrames.reserve(strtol10((*iter).mGlobalValue.c_str()));
+			mFrames.reserve(strtoul10((*iter).mGlobalValue.c_str()));
 		}
 		else if((*iter).mName == "numJoints")	{
-			const unsigned int num = strtol10((*iter).mGlobalValue.c_str());
+			const unsigned int num = strtoul10((*iter).mGlobalValue.c_str());
 			mAnimatedBones.reserve(num);
 
 			// try to guess the number of animated components if that element is not given
@@ -423,7 +423,7 @@ MD5AnimParser::MD5AnimParser(SectionList
 				mNumAnimatedComponents = num * 6;
 		}
 		else if((*iter).mName == "numAnimatedComponents")	{
-			mAnimatedBones.reserve( strtol10((*iter).mGlobalValue.c_str()));
+			mAnimatedBones.reserve( strtoul10((*iter).mGlobalValue.c_str()));
 		}
 		else if((*iter).mName == "frameRate")	{
 			fast_atof_move((*iter).mGlobalValue.c_str(),fFrameRate);
@@ -441,17 +441,17 @@ MD5CameraParser::MD5CameraParser(Section
 
 	for (SectionList::const_iterator iter =  mSections.begin(), iterEnd = mSections.end();iter != iterEnd;++iter) {
 		if ((*iter).mName == "numFrames")	{
-			frames.reserve(strtol10((*iter).mGlobalValue.c_str()));
+			frames.reserve(strtoul10((*iter).mGlobalValue.c_str()));
 		}
 		else if ((*iter).mName == "frameRate")	{
 			fFrameRate = fast_atof ((*iter).mGlobalValue.c_str());
 		}
 		else if ((*iter).mName == "numCuts")	{
-			cuts.reserve(strtol10((*iter).mGlobalValue.c_str()));
+			cuts.reserve(strtoul10((*iter).mGlobalValue.c_str()));
 		}
 		else if ((*iter).mName == "cuts")	{
 			for (ElementList::const_iterator eit = (*iter).mElements.begin(), eitEnd = (*iter).mElements.end(); eit != eitEnd; ++eit){
-				cuts.push_back(strtol10((*eit).szStart)+1);
+				cuts.push_back(strtoul10((*eit).szStart)+1);
 			}
 		}
 		else if ((*iter).mName == "camera")	{
diff -up assimp--2.0.863-sdk/code/NFFLoader.cpp.fastatof assimp--2.0.863-sdk/code/NFFLoader.cpp
--- assimp--2.0.863-sdk/code/NFFLoader.cpp.fastatof	2011-03-22 12:48:16.842758895 -0400
+++ assimp--2.0.863-sdk/code/NFFLoader.cpp	2011-03-22 13:05:01.100759001 -0400
@@ -360,7 +360,7 @@ void NFFImporter::InternReadFile( const 
 				}
 
 				// read the numbr of vertices
-				unsigned int num = ::strtol10(sz,&sz);
+				unsigned int num = ::strtoul10(sz,&sz);
 				
 				// temporary storage
 				std::vector<aiColor4D>  tempColors;
@@ -389,7 +389,7 @@ void NFFImporter::InternReadFile( const 
 						if (TokenMatch(sz,"0x",2))
 						{
 							hasColor = true;
-							register unsigned int numIdx = ::strtol16(sz,&sz);
+							register unsigned int numIdx = ::strtoul16(sz,&sz);
 							aiColor4D clr;
 							clr.a = 1.f;
 
@@ -430,7 +430,7 @@ void NFFImporter::InternReadFile( const 
 
 				AI_NFF2_GET_NEXT_TOKEN();
 				if (!num)throw DeadlyImportError("NFF2: There are zero vertices");
-				num = ::strtol10(sz,&sz);
+				num = ::strtoul10(sz,&sz);
 
 				std::vector<unsigned int> tempIdx;
 				tempIdx.reserve(10);
@@ -438,7 +438,7 @@ void NFFImporter::InternReadFile( const 
 				{
 					AI_NFF2_GET_NEXT_TOKEN();
 					SkipSpaces(line,&sz);
-					unsigned int numIdx = ::strtol10(sz,&sz);
+					unsigned int numIdx = ::strtoul10(sz,&sz);
 
 					// read all faces indices
 					if (numIdx)
@@ -450,7 +450,7 @@ void NFFImporter::InternReadFile( const 
 						for (unsigned int a = 0; a < numIdx;++a)
 						{
 							SkipSpaces(sz,&sz);
-							m = ::strtol10(sz,&sz);
+							m = ::strtoul10(sz,&sz);
 							if (m >= (unsigned int)tempPositions.size())
 							{
 								DefaultLogger::get()->error("NFF2: Vertex index overflow");
@@ -478,7 +478,7 @@ void NFFImporter::InternReadFile( const 
 						{
 							hasColor = true;
 							const char* sz2 = sz;
-							numIdx = ::strtol16(sz,&sz);
+							numIdx = ::strtoul16(sz,&sz);
 							const unsigned int diff = (unsigned int)(sz-sz2);
 
 							// 0xRRGGBB
@@ -556,7 +556,7 @@ void NFFImporter::InternReadFile( const 
 						else if (!materialTable.empty() && TokenMatch(sz,"matid",5))
 						{
 							SkipSpaces(&sz);
-							matIdx = ::strtol10(sz,&sz);
+							matIdx = ::strtoul10(sz,&sz);
 							if (matIdx >= materialTable.size())
 							{
 								DefaultLogger::get()->error("NFF2: Material index overflow.");
@@ -719,7 +719,7 @@ void NFFImporter::InternReadFile( const 
 					sz = &line[1];out = currentMesh;
 				}
 				SkipSpaces(sz,&sz);
-				m = strtol10(sz);
+				m = strtoul10(sz);
 
 				// ---- flip the face order
 				out->vertices.resize(out->vertices.size()+m);
@@ -978,7 +978,7 @@ void NFFImporter::InternReadFile( const 
 			else if (TokenMatch(sz,"tess",4))
 			{
 				SkipSpaces(&sz);
-				iTesselation = strtol10(sz);
+				iTesselation = strtoul10(sz);
 			}
 			// 'from' - camera position
 			else if (TokenMatch(sz,"from",4))
diff -up assimp--2.0.863-sdk/code/OFFLoader.cpp.fastatof assimp--2.0.863-sdk/code/OFFLoader.cpp
--- assimp--2.0.863-sdk/code/OFFLoader.cpp.fastatof	2011-03-22 13:05:17.639759001 -0400
+++ assimp--2.0.863-sdk/code/OFFLoader.cpp	2011-03-22 13:05:21.475759018 -0400
@@ -112,8 +112,8 @@ void OFFImporter::InternReadFile( const 
 	}
 
 	const char* sz = line; SkipSpaces(&sz);
-	const unsigned int numVertices = strtol10(sz,&sz);SkipSpaces(&sz);
-	const unsigned int numFaces = strtol10(sz,&sz);
+	const unsigned int numVertices = strtoul10(sz,&sz);SkipSpaces(&sz);
+	const unsigned int numFaces = strtoul10(sz,&sz);
 
 	pScene->mMeshes = new aiMesh*[ pScene->mNumMeshes = 1 ];
 	aiMesh* mesh = pScene->mMeshes[0] = new aiMesh();
@@ -148,7 +148,7 @@ void OFFImporter::InternReadFile( const 
 			break;
 		}
 		sz = line;SkipSpaces(&sz);
-		if(!(faces->mNumIndices = strtol10(sz,&sz)) || faces->mNumIndices > 9)
+		if(!(faces->mNumIndices = strtoul10(sz,&sz)) || faces->mNumIndices > 9)
 		{
 			DefaultLogger::get()->error("OFF: Faces with zero indices aren't allowed");
 			--mesh->mNumFaces;
@@ -172,14 +172,14 @@ void OFFImporter::InternReadFile( const 
 
 		unsigned int idx;
 		sz = line;SkipSpaces(&sz);
-		if(!(idx = strtol10(sz,&sz)) || idx > 9)
+		if(!(idx = strtoul10(sz,&sz)) || idx > 9)
 			continue;
 
 		faces->mIndices = new unsigned int [faces->mNumIndices];
 		for (unsigned int m = 0; m < faces->mNumIndices;++m)
 		{
 			SkipSpaces(&sz);
-			if ((idx = strtol10(sz,&sz)) >= numVertices)
+			if ((idx = strtoul10(sz,&sz)) >= numVertices)
 			{
 				DefaultLogger::get()->error("OFF: Vertex index is out of range");
 				idx = numVertices-1;
diff -up assimp--2.0.863-sdk/code/PlyParser.cpp.fastatof assimp--2.0.863-sdk/code/PlyParser.cpp
--- assimp--2.0.863-sdk/code/PlyParser.cpp.fastatof	2011-03-22 12:52:15.090758998 -0400
+++ assimp--2.0.863-sdk/code/PlyParser.cpp	2011-03-22 13:11:41.344759001 -0400
@@ -387,7 +387,7 @@ bool PLY::Element::ParseElement (const c
 	if (!SkipSpaces(&pCur))return false;
 	
 	//parse the number of occurences of this element
-	pOut->NumOccur = strtol10(pCur,&pCur);
+	pOut->NumOccur = strtoul10(pCur,&pCur);
 
 	// go to the next line
 	SkipSpacesAndLineEnd(pCur,&pCur);
@@ -800,14 +800,14 @@ bool PLY::PropertyInstance::ParseValue(
 	case EDT_UShort:
 	case EDT_UChar:
 
-		out->iUInt = (uint32_t)strtol10(pCur, &pCur);
+		out->iUInt = (uint32_t)strtoul10(pCur, &pCur);
 		break;
 
 	case EDT_Int:
 	case EDT_Short:
 	case EDT_Char:
 
-		out->iInt = (int32_t)strtol10s(pCur, &pCur);
+		out->iInt = (int32_t)strtol10(pCur, &pCur);
 		break;
 
 	case EDT_Float:
diff -up assimp--2.0.863-sdk/code/SceneCombiner.cpp.fastatof assimp--2.0.863-sdk/code/SceneCombiner.cpp
--- assimp--2.0.863-sdk/code/SceneCombiner.cpp.fastatof	2011-03-22 13:05:47.551758995 -0400
+++ assimp--2.0.863-sdk/code/SceneCombiner.cpp	2011-03-22 13:05:51.736759001 -0400
@@ -405,7 +405,7 @@ void SceneCombiner::MergeScenes(aiScene*
 							aiString& s = *((aiString*)prop->mData);
 							if ('*' == s.data[0])	{
 								// Offset the index and write it back ..
-								const unsigned int idx = strtol10(&s.data[1]) + offset[n];
+								const unsigned int idx = strtoul10(&s.data[1]) + offset[n];
 								ASSIMP_itoa10(&s.data[1],sizeof(s.data)-1,idx);
 							}
 						}
diff -up assimp--2.0.863-sdk/code/SMDLoader.cpp.fastatof assimp--2.0.863-sdk/code/SMDLoader.cpp
--- assimp--2.0.863-sdk/code/SMDLoader.cpp.fastatof	2011-03-22 13:06:00.968759053 -0400
+++ assimp--2.0.863-sdk/code/SMDLoader.cpp	2011-03-22 13:11:48.357759000 -0400
@@ -681,7 +681,7 @@ void SMDImporter::ParseFile()
 		if (TokenMatch(szCurrent,"version",7))
 		{
 			if(!SkipSpaces(szCurrent,&szCurrent)) break;
-			if (1 != strtol10(szCurrent,&szCurrent))
+			if (1 != strtoul10(szCurrent,&szCurrent))
 			{
 				DefaultLogger::get()->warn("SMD.version is not 1. This "
 					"file format is not known. Continuing happily ...");
@@ -1031,7 +1031,7 @@ bool SMDImporter::ParseUnsignedInt(const
 	if(!SkipSpaces(&szCurrent))
 		return false;
 
-	out = strtol10(szCurrent,szCurrentOut);
+	out = strtoul10(szCurrent,szCurrentOut);
 	return true;
 }
 
@@ -1043,7 +1043,7 @@ bool SMDImporter::ParseSignedInt(const c
 	if(!SkipSpaces(&szCurrent))
 		return false;
 
-	out = strtol10s(szCurrent,szCurrentOut);
+	out = strtol10(szCurrent,szCurrentOut);
 	return true;
 }
 
diff -up assimp--2.0.863-sdk/code/UnrealLoader.cpp.fastatof assimp--2.0.863-sdk/code/UnrealLoader.cpp
--- assimp--2.0.863-sdk/code/UnrealLoader.cpp.fastatof	2011-03-22 13:06:14.688759000 -0400
+++ assimp--2.0.863-sdk/code/UnrealLoader.cpp	2011-03-22 13:06:20.974758999 -0400
@@ -266,7 +266,7 @@ void UnrealImporter::InternReadFile( con
 						for (;!IsLineEnd(*data);++data)	{
 							if (!::ASSIMP_strincmp(data,"NUM=",4))	{
 								data += 4;
-								me.first = strtol10(data,&data);
+								me.first = strtoul10(data,&data);
 							}
 							else if (!::ASSIMP_strincmp(data,"TEXTURE=",8))	{
 								data += 8;
diff -up assimp--2.0.863-sdk/code/XFileParser.cpp.fastatof assimp--2.0.863-sdk/code/XFileParser.cpp
--- assimp--2.0.863-sdk/code/XFileParser.cpp.fastatof	2011-03-22 13:10:07.226759020 -0400
+++ assimp--2.0.863-sdk/code/XFileParser.cpp	2011-03-22 13:10:19.294759272 -0400
@@ -1262,7 +1262,7 @@ unsigned int XFileParser::ReadInt()
 	{
 		FindNextNoneWhiteSpace();
 
-		// TODO: consider using strtol10s instead???
+		// TODO: consider using strtol10 instead???
 
 		// check preceeding minus sign
 		bool isNegative = false;
diff -up assimp--2.0.863-sdk/doc/dox.h.fastatof assimp--2.0.863-sdk/doc/dox.h
--- assimp--2.0.863-sdk/doc/dox.h.fastatof	2011-03-22 13:08:49.587759010 -0400
+++ assimp--2.0.863-sdk/doc/dox.h	2011-03-22 13:09:12.275758986 -0400
@@ -877,7 +877,7 @@ Mixed stuff for internal use by loaders,
 <li><b>StreamReader</b> (<i>StreamReader.h</i>) - safe, endianess-correct, binary reading.</li>
 <li><b>IrrXML</b> (<i>irrXMLWrapper.h</i>)  - for XML-parsing (SAX.</li>
 <li><b>CommentRemover</b> (<i>RemoveComments.h</i>) - remove single-line and multi-line comments from a text file.</li>
-<li>fast_atof, strtol10, strtol16, SkipSpaceAndLineEnd, SkipToNextToken .. large family of low-level 
+<li>fast_atof, strtoul10, strtoul16, SkipSpaceAndLineEnd, SkipToNextToken .. large family of low-level 
 parsing functions, mostly declared in <i>fast_atof.h</i>, <i>StringComparison.h</i> and <i>ParsingUtils.h</i> (a collection that grew
 historically, so don't expect perfect organization). </li>
 <li><b>ComputeNormalsWithSmoothingsGroups()</b> (<i>SmoothingGroups.h</i>) - Computes normal vectors from plain old smoothing groups. </li>
diff -up assimp--2.0.863-sdk/tools/assimp_cmd/ImageExtractor.cpp.fastatof assimp--2.0.863-sdk/tools/assimp_cmd/ImageExtractor.cpp
--- assimp--2.0.863-sdk/tools/assimp_cmd/ImageExtractor.cpp.fastatof	2011-03-22 13:09:24.976759003 -0400
+++ assimp--2.0.863-sdk/tools/assimp_cmd/ImageExtractor.cpp	2011-03-22 13:09:37.533759028 -0400
@@ -262,10 +262,10 @@ int Assimp_Extract (const char* const* p
 			nosuffix = true;
 		}
 		else if ( !strncmp( params[i], "--texture=",10)) {
-			texIdx = ::strtol10(params[i]+10);
+			texIdx = ::strtoul10(params[i]+10);
 		}
 		else if ( !strncmp( params[i], "-t",2)) {
-			texIdx = ::strtol10(params[i]+2);
+			texIdx = ::strtoul10(params[i]+2);
 		}
 		else if ( !strcmp( params[i], "-ba") ||  !strcmp( params[i], "--bmp-with-alpha")) {
 			flags |= AI_EXTRACT_WRITE_BMP_ALPHA;
