diff --git a/Mac/Modules/ae/_AEmodule.c b/Mac/Modules/ae/_AEmodule.c
index defa292..d01b100 100644
--- a/Mac/Modules/ae/_AEmodule.c
+++ b/Mac/Modules/ae/_AEmodule.c
@@ -71,7 +71,7 @@
 	it->ob_itself = *itself;
 	return (PyObject *)it;
 }
-AEDesc_Convert(PyObject *v, AEDesc *p_itself)
+int AEDesc_Convert(PyObject *v, AEDesc *p_itself)
 {
 	if (!AEDesc_Check(v))
 	{
diff --git a/Mac/Modules/cf/_CFmodule.c b/Mac/Modules/cf/_CFmodule.c
index 716e3fd..24083bf 100644
--- a/Mac/Modules/cf/_CFmodule.c
+++ b/Mac/Modules/cf/_CFmodule.c
@@ -55,6 +55,7 @@
 	return Py_BuildValue("ll", (long)itself->location, (long)itself->length);
 }
 
+int
 CFRange_Convert(PyObject *v, CFRange *p_itself)
 {
 	long location, length;
@@ -102,7 +103,7 @@
 	it->ob_freeit = CFRelease;
 	return (PyObject *)it;
 }
-CFTypeRefObj_Convert(PyObject *v, CFTypeRef *p_itself)
+int CFTypeRefObj_Convert(PyObject *v, CFTypeRef *p_itself)
 {
 
 	if (v == Py_None) { *p_itself = NULL; return 1; }
@@ -325,7 +326,7 @@
 	it->ob_freeit = CFRelease;
 	return (PyObject *)it;
 }
-CFArrayRefObj_Convert(PyObject *v, CFArrayRef *p_itself)
+int CFArrayRefObj_Convert(PyObject *v, CFArrayRef *p_itself)
 {
 
 	if (v == Py_None) { *p_itself = NULL; return 1; }
@@ -475,7 +476,7 @@
 	it->ob_freeit = CFRelease;
 	return (PyObject *)it;
 }
-CFMutableArrayRefObj_Convert(PyObject *v, CFMutableArrayRef *p_itself)
+int CFMutableArrayRefObj_Convert(PyObject *v, CFMutableArrayRef *p_itself)
 {
 
 	if (v == Py_None) { *p_itself = NULL; return 1; }
@@ -628,7 +629,7 @@
 	it->ob_freeit = CFRelease;
 	return (PyObject *)it;
 }
-CFDictionaryRefObj_Convert(PyObject *v, CFDictionaryRef *p_itself)
+int CFDictionaryRefObj_Convert(PyObject *v, CFDictionaryRef *p_itself)
 {
 
 	if (v == Py_None) { *p_itself = NULL; return 1; }
@@ -760,7 +761,7 @@
 	it->ob_freeit = CFRelease;
 	return (PyObject *)it;
 }
-CFMutableDictionaryRefObj_Convert(PyObject *v, CFMutableDictionaryRef *p_itself)
+int CFMutableDictionaryRefObj_Convert(PyObject *v, CFMutableDictionaryRef *p_itself)
 {
 
 	if (v == Py_None) { *p_itself = NULL; return 1; }
@@ -876,7 +877,7 @@
 	it->ob_freeit = CFRelease;
 	return (PyObject *)it;
 }
-CFDataRefObj_Convert(PyObject *v, CFDataRef *p_itself)
+int CFDataRefObj_Convert(PyObject *v, CFDataRef *p_itself)
 {
 
 	if (v == Py_None) { *p_itself = NULL; return 1; }
@@ -1026,7 +1027,7 @@
 	it->ob_freeit = CFRelease;
 	return (PyObject *)it;
 }
-CFMutableDataRefObj_Convert(PyObject *v, CFMutableDataRef *p_itself)
+int CFMutableDataRefObj_Convert(PyObject *v, CFMutableDataRef *p_itself)
 {
 
 	if (v == Py_None) { *p_itself = NULL; return 1; }
@@ -1224,7 +1225,7 @@
 	it->ob_freeit = CFRelease;
 	return (PyObject *)it;
 }
-CFStringRefObj_Convert(PyObject *v, CFStringRef *p_itself)
+int CFStringRefObj_Convert(PyObject *v, CFStringRef *p_itself)
 {
 
 	if (v == Py_None) { *p_itself = NULL; return 1; }
@@ -1827,7 +1828,7 @@
 	it->ob_freeit = CFRelease;
 	return (PyObject *)it;
 }
-CFMutableStringRefObj_Convert(PyObject *v, CFMutableStringRef *p_itself)
+int CFMutableStringRefObj_Convert(PyObject *v, CFMutableStringRef *p_itself)
 {
 
 	if (v == Py_None) { *p_itself = NULL; return 1; }
@@ -2114,7 +2115,7 @@
 	it->ob_freeit = CFRelease;
 	return (PyObject *)it;
 }
-CFURLRefObj_Convert(PyObject *v, CFURLRef *p_itself)
+int CFURLRefObj_Convert(PyObject *v, CFURLRef *p_itself)
 {
 
 	if (v == Py_None) { *p_itself = NULL; return 1; }
diff --git a/Mac/Modules/cf/cfsupport.py b/Mac/Modules/cf/cfsupport.py
index 1f3f357..f6fdaea 100644
--- a/Mac/Modules/cf/cfsupport.py
+++ b/Mac/Modules/cf/cfsupport.py
@@ -81,6 +81,7 @@
 	return Py_BuildValue("ll", (long)itself->location, (long)itself->length);
 }
 
+int
 CFRange_Convert(PyObject *v, CFRange *p_itself)
 {
 	long location, length;
diff --git a/Mac/Modules/cm/_Cmmodule.c b/Mac/Modules/cm/_Cmmodule.c
index f13c046..10d4acb 100644
--- a/Mac/Modules/cm/_Cmmodule.c
+++ b/Mac/Modules/cm/_Cmmodule.c
@@ -84,7 +84,7 @@
 	it->ob_itself = itself;
 	return (PyObject *)it;
 }
-CmpInstObj_Convert(PyObject *v, ComponentInstance *p_itself)
+int CmpInstObj_Convert(PyObject *v, ComponentInstance *p_itself)
 {
 	if (!CmpInstObj_Check(v))
 	{
@@ -332,7 +332,7 @@
 	it->ob_itself = itself;
 	return (PyObject *)it;
 }
-CmpObj_Convert(PyObject *v, Component *p_itself)
+int CmpObj_Convert(PyObject *v, Component *p_itself)
 {
 	if ( v == Py_None ) {
 						*p_itself = 0;
diff --git a/Mac/Modules/ctl/_Ctlmodule.c b/Mac/Modules/ctl/_Ctlmodule.c
index d30cec1..34195e9 100644
--- a/Mac/Modules/ctl/_Ctlmodule.c
+++ b/Mac/Modules/ctl/_Ctlmodule.c
@@ -118,7 +118,7 @@
 	it->ob_callbackdict = NULL;
 	return (PyObject *)it;
 }
-CtlObj_Convert(PyObject *v, ControlHandle *p_itself)
+int CtlObj_Convert(PyObject *v, ControlHandle *p_itself)
 {
 	if (!CtlObj_Check(v))
 	{
diff --git a/Mac/Modules/dlg/_Dlgmodule.c b/Mac/Modules/dlg/_Dlgmodule.c
index 414c09f..1a02654 100644
--- a/Mac/Modules/dlg/_Dlgmodule.c
+++ b/Mac/Modules/dlg/_Dlgmodule.c
@@ -158,7 +158,7 @@
 	SetWRefCon(GetDialogWindow(itself), (long)it);
 	return (PyObject *)it;
 }
-DlgObj_Convert(PyObject *v, DialogPtr *p_itself)
+int DlgObj_Convert(PyObject *v, DialogPtr *p_itself)
 {
 	if (v == Py_None) { *p_itself = NULL; return 1; }
 	if (PyInt_Check(v)) { *p_itself = (DialogPtr)PyInt_AsLong(v);
diff --git a/Mac/Modules/drag/_Dragmodule.c b/Mac/Modules/drag/_Dragmodule.c
index 877854f..9139abc 100644
--- a/Mac/Modules/drag/_Dragmodule.c
+++ b/Mac/Modules/drag/_Dragmodule.c
@@ -66,7 +66,7 @@
 	it->sendproc = NULL;
 	return (PyObject *)it;
 }
-DragObj_Convert(PyObject *v, DragRef *p_itself)
+int DragObj_Convert(PyObject *v, DragRef *p_itself)
 {
 	if (!DragObj_Check(v))
 	{
diff --git a/Mac/Modules/list/_Listmodule.c b/Mac/Modules/list/_Listmodule.c
index 950a666..6b74bcc 100644
--- a/Mac/Modules/list/_Listmodule.c
+++ b/Mac/Modules/list/_Listmodule.c
@@ -85,7 +85,7 @@
 	it->ob_must_be_disposed = 1;
 	return (PyObject *)it;
 }
-ListObj_Convert(PyObject *v, ListHandle *p_itself)
+int ListObj_Convert(PyObject *v, ListHandle *p_itself)
 {
 	if (!ListObj_Check(v))
 	{
diff --git a/Mac/Modules/menu/_Menumodule.c b/Mac/Modules/menu/_Menumodule.c
index 4cc6bc4..62d6df4 100644
--- a/Mac/Modules/menu/_Menumodule.c
+++ b/Mac/Modules/menu/_Menumodule.c
@@ -67,7 +67,7 @@
 	it->ob_itself = itself;
 	return (PyObject *)it;
 }
-MenuObj_Convert(PyObject *v, MenuHandle *p_itself)
+int MenuObj_Convert(PyObject *v, MenuHandle *p_itself)
 {
 	if (!MenuObj_Check(v))
 	{
diff --git a/Mac/Modules/mlte/_Mltemodule.c b/Mac/Modules/mlte/_Mltemodule.c
index f09ae5c..d4f3476 100644
--- a/Mac/Modules/mlte/_Mltemodule.c
+++ b/Mac/Modules/mlte/_Mltemodule.c
@@ -107,7 +107,7 @@
 	it->ob_itself = itself;
 	return (PyObject *)it;
 }
-TXNObj_Convert(PyObject *v, TXNObject *p_itself)
+int TXNObj_Convert(PyObject *v, TXNObject *p_itself)
 {
 	if (!TXNObj_Check(v))
 	{
@@ -1094,7 +1094,7 @@
 	it->ob_itself = itself;
 	return (PyObject *)it;
 }
-TXNFontMenuObj_Convert(PyObject *v, TXNFontMenuObject *p_itself)
+int TXNFontMenuObj_Convert(PyObject *v, TXNFontMenuObject *p_itself)
 {
 	if (!TXNFontMenuObj_Check(v))
 	{
diff --git a/Mac/Modules/qd/_Qdmodule.c b/Mac/Modules/qd/_Qdmodule.c
index 4d27c95..ec44936 100644
--- a/Mac/Modules/qd/_Qdmodule.c
+++ b/Mac/Modules/qd/_Qdmodule.c
@@ -163,7 +163,7 @@
 	it->ob_itself = itself;
 	return (PyObject *)it;
 }
-GrafObj_Convert(PyObject *v, GrafPtr *p_itself)
+int GrafObj_Convert(PyObject *v, GrafPtr *p_itself)
 {
 #if 1
 	{
@@ -414,7 +414,7 @@
 	it->referred_bitmap = NULL;
 	return (PyObject *)it;
 }
-BMObj_Convert(PyObject *v, BitMapPtr *p_itself)
+int BMObj_Convert(PyObject *v, BitMapPtr *p_itself)
 {
 	if (!BMObj_Check(v))
 	{
diff --git a/Mac/Modules/qdoffs/_Qdoffsmodule.c b/Mac/Modules/qdoffs/_Qdoffsmodule.c
index 0e7162f..3d51259 100644
--- a/Mac/Modules/qdoffs/_Qdoffsmodule.c
+++ b/Mac/Modules/qdoffs/_Qdoffsmodule.c
@@ -55,7 +55,7 @@
 	it->ob_itself = itself;
 	return (PyObject *)it;
 }
-GWorldObj_Convert(PyObject *v, GWorldPtr *p_itself)
+int GWorldObj_Convert(PyObject *v, GWorldPtr *p_itself)
 {
 	if (!GWorldObj_Check(v))
 	{
diff --git a/Mac/Modules/qt/_Qtmodule.c b/Mac/Modules/qt/_Qtmodule.c
index d2f8f1a..7f57ae4 100644
--- a/Mac/Modules/qt/_Qtmodule.c
+++ b/Mac/Modules/qt/_Qtmodule.c
@@ -112,7 +112,7 @@
 	it->ob_itself = itself;
 	return (PyObject *)it;
 }
-MovieCtlObj_Convert(PyObject *v, MovieController *p_itself)
+int MovieCtlObj_Convert(PyObject *v, MovieController *p_itself)
 {
 	if (!MovieCtlObj_Check(v))
 	{
@@ -974,7 +974,7 @@
 	it->ob_itself = itself;
 	return (PyObject *)it;
 }
-TimeBaseObj_Convert(PyObject *v, TimeBase *p_itself)
+int TimeBaseObj_Convert(PyObject *v, TimeBase *p_itself)
 {
 	if (!TimeBaseObj_Check(v))
 	{
@@ -1368,7 +1368,7 @@
 	it->ob_itself = itself;
 	return (PyObject *)it;
 }
-UserDataObj_Convert(PyObject *v, UserData *p_itself)
+int UserDataObj_Convert(PyObject *v, UserData *p_itself)
 {
 	if (!UserDataObj_Check(v))
 	{
@@ -1645,7 +1645,7 @@
 	it->ob_itself = itself;
 	return (PyObject *)it;
 }
-MediaObj_Convert(PyObject *v, Media *p_itself)
+int MediaObj_Convert(PyObject *v, Media *p_itself)
 {
 	if (!MediaObj_Check(v))
 	{
@@ -2679,7 +2679,7 @@
 	it->ob_itself = itself;
 	return (PyObject *)it;
 }
-TrackObj_Convert(PyObject *v, Track *p_itself)
+int TrackObj_Convert(PyObject *v, Track *p_itself)
 {
 	if (!TrackObj_Check(v))
 	{
@@ -3766,7 +3766,7 @@
 	it->ob_itself = itself;
 	return (PyObject *)it;
 }
-MovieObj_Convert(PyObject *v, Movie *p_itself)
+int MovieObj_Convert(PyObject *v, Movie *p_itself)
 {
 	if (!MovieObj_Check(v))
 	{
diff --git a/Mac/Modules/res/_Resmodule.c b/Mac/Modules/res/_Resmodule.c
index 46b379c..76d3bec 100644
--- a/Mac/Modules/res/_Resmodule.c
+++ b/Mac/Modules/res/_Resmodule.c
@@ -65,7 +65,7 @@
 	it->ob_freeit = NULL;
 	return (PyObject *)it;
 }
-ResObj_Convert(PyObject *v, Handle *p_itself)
+int ResObj_Convert(PyObject *v, Handle *p_itself)
 {
 	if (!ResObj_Check(v))
 	{
diff --git a/Mac/Modules/snd/_Sndmodule.c b/Mac/Modules/snd/_Sndmodule.c
index 23989cd..e772f91 100644
--- a/Mac/Modules/snd/_Sndmodule.c
+++ b/Mac/Modules/snd/_Sndmodule.c
@@ -80,7 +80,7 @@
 	it->ob_A5 = SetCurrentA5();
 	return (PyObject *)it;
 }
-static SndCh_Convert(PyObject *v, SndChannelPtr *p_itself)
+static int SndCh_Convert(PyObject *v, SndChannelPtr *p_itself)
 {
 	if (!SndCh_Check(v))
 	{
diff --git a/Mac/Modules/te/_TEmodule.c b/Mac/Modules/te/_TEmodule.c
index ee383f9..a5cff23 100644
--- a/Mac/Modules/te/_TEmodule.c
+++ b/Mac/Modules/te/_TEmodule.c
@@ -82,7 +82,7 @@
 	it->ob_itself = itself;
 	return (PyObject *)it;
 }
-TEObj_Convert(PyObject *v, TEHandle *p_itself)
+int TEObj_Convert(PyObject *v, TEHandle *p_itself)
 {
 	if (!TEObj_Check(v))
 	{
diff --git a/Mac/Modules/win/_Winmodule.c b/Mac/Modules/win/_Winmodule.c
index 8eecd1a..5d597ac 100644
--- a/Mac/Modules/win/_Winmodule.c
+++ b/Mac/Modules/win/_Winmodule.c
@@ -82,7 +82,7 @@
 	}
 	return (PyObject *)it;
 }
-WinObj_Convert(PyObject *v, WindowPtr *p_itself)
+int WinObj_Convert(PyObject *v, WindowPtr *p_itself)
 {
 
 	if (v == Py_None) { *p_itself = NULL; return 1; }
