Run 2to3's print fixer over some places that had been missed.
diff --git a/Mac/Demo/PICTbrowse/PICTbrowse.py b/Mac/Demo/PICTbrowse/PICTbrowse.py
index 0adfc83..83f431e 100644
--- a/Mac/Demo/PICTbrowse/PICTbrowse.py
+++ b/Mac/Demo/PICTbrowse/PICTbrowse.py
@@ -69,9 +69,9 @@
         self.resid = resid
         picture = Qd.GetPicture(self.resid)
         # Get rect for picture
-        print repr(picture.data[:16])
+        print(repr(picture.data[:16]))
         sz, t, l, b, r = struct.unpack('hhhhh', picture.data[:10])
-        print 'pict:', t, l, b, r
+        print('pict:', t, l, b, r)
         width = r-l
         height = b-t
         if width < 64: width = 64
@@ -79,7 +79,7 @@
         if height < 64: height = 64
         elif height > 320: height = 320
         bounds = (LEFT, TOP, LEFT+width, TOP+height)
-        print 'bounds:', bounds
+        print('bounds:', bounds)
 
         self.wid = Win.NewWindow(bounds, resname, 1, 0, -1, 1, 0)
         self.wid.SetWindowPic(picture)
diff --git a/Mac/Demo/PICTbrowse/oldPICTbrowse.py b/Mac/Demo/PICTbrowse/oldPICTbrowse.py
index 8600bb2..2c6f08b 100644
--- a/Mac/Demo/PICTbrowse/oldPICTbrowse.py
+++ b/Mac/Demo/PICTbrowse/oldPICTbrowse.py
@@ -68,9 +68,9 @@
         self.resid = resid
         picture = Qd.GetPicture(self.resid)
         # Get rect for picture
-        print repr(picture.data[:16])
+        print(repr(picture.data[:16]))
         sz, t, l, b, r = struct.unpack('hhhhh', picture.data[:10])
-        print 'pict:', t, l, b, r
+        print('pict:', t, l, b, r)
         width = r-l
         height = b-t
         if width < 64: width = 64
@@ -78,7 +78,7 @@
         if height < 64: height = 64
         elif height > 320: height = 320
         bounds = (LEFT, TOP, LEFT+width, TOP+height)
-        print 'bounds:', bounds
+        print('bounds:', bounds)
 
         self.wid = Win.NewWindow(bounds, resname, 1, 0, -1, 1, 0)
         self.wid.SetWindowPic(picture)
@@ -115,7 +115,7 @@
         (what, message, when, where, modifiers) = event
         Qd.SetPort(self.wid)
         where = Qd.GlobalToLocal(where)
-        print 'LISTHIT', where
+        print('LISTHIT', where)
         if self.list.LClick(where, modifiers):
             self.do_show()
 
diff --git a/Mac/Demo/applescript/makedisk.py b/Mac/Demo/applescript/makedisk.py
index 013331c..981a5ef 100644
--- a/Mac/Demo/applescript/makedisk.py
+++ b/Mac/Demo/applescript/makedisk.py
@@ -8,8 +8,8 @@
 try:
     objref = talker.create('my disk image', saving_as=filespec, leave_image_mounted=1)
 except Disk_Copy.Error as arg:
-    print "ERROR: my disk image:", arg
+    print("ERROR: my disk image:", arg)
 else:
-    print 'objref=', objref
-print 'Type return to exit-'
+    print('objref=', objref)
+print('Type return to exit-')
 sys.stdin.readline()
diff --git a/Mac/Demo/imgbrowse/imgbrowse.py b/Mac/Demo/imgbrowse/imgbrowse.py
index 57cddd3..fddfc99 100644
--- a/Mac/Demo/imgbrowse/imgbrowse.py
+++ b/Mac/Demo/imgbrowse/imgbrowse.py
@@ -25,7 +25,7 @@
 
 
 def main():
-    print 'hello world'
+    print('hello world')
     imgbrowse()
 
 class imgbrowse(FrameWork.Application):
@@ -84,10 +84,10 @@
     def do_update(self, *args):
         pass
         currect = self.fitrect()
-        print 'PICT:', self.pictrect
-        print 'WIND:', currect
-        print 'ARGS:', (self.pixmap, self.wid.GetWindowPort().GetPortBitMapForCopyBits(), self.pictrect,
-                        currect, QuickDraw.srcCopy, None)
+        print('PICT:', self.pictrect)
+        print('WIND:', currect)
+        print('ARGS:', (self.pixmap, self.wid.GetWindowPort().GetPortBitMapForCopyBits(), self.pictrect,
+                        currect, QuickDraw.srcCopy, None))
         self.info()
         Qd.CopyBits(self.pixmap, self.wid.GetWindowPort().GetPortBitMapForCopyBits(), self.pictrect,
                         currect, QuickDraw.srcCopy, None)
diff --git a/Mac/Demo/imgbrowse/mac_image.py b/Mac/Demo/imgbrowse/mac_image.py
index 9c9eeb7..75baff4 100644
--- a/Mac/Demo/imgbrowse/mac_image.py
+++ b/Mac/Demo/imgbrowse/mac_image.py
@@ -38,19 +38,19 @@
             cmpCount, cmpSize, \
             planeBytes, pmTable, pmReserved \
                     = struct.unpack("lhhhhhhhlllhhhhlll", data)
-    print 'Base:       0x%x'%baseAddr
-    print 'rowBytes:   %d (0x%x)'%(rowBytes&0x3fff, rowBytes)
-    print 'rect:       %d, %d, %d, %d'%(t, l, b, r)
-    print 'pmVersion:  0x%x'%pmVersion
-    print 'packing:    %d %d'%(packType, packSize)
-    print 'resolution: %f x %f'%(float(hRes)/0x10000, float(vRes)/0x10000)
-    print 'pixeltype:  %d, size %d'%(pixelType, pixelSize)
-    print 'components: %d, size %d'%(cmpCount, cmpSize)
-    print 'planeBytes: %d (0x%x)'%(planeBytes, planeBytes)
-    print 'pmTable:    0x%x'%pmTable
-    print 'pmReserved: 0x%x'%pmReserved
+    print('Base:       0x%x'%baseAddr)
+    print('rowBytes:   %d (0x%x)'%(rowBytes&0x3fff, rowBytes))
+    print('rect:       %d, %d, %d, %d'%(t, l, b, r))
+    print('pmVersion:  0x%x'%pmVersion)
+    print('packing:    %d %d'%(packType, packSize))
+    print('resolution: %f x %f'%(float(hRes)/0x10000, float(vRes)/0x10000))
+    print('pixeltype:  %d, size %d'%(pixelType, pixelSize))
+    print('components: %d, size %d'%(cmpCount, cmpSize))
+    print('planeBytes: %d (0x%x)'%(planeBytes, planeBytes))
+    print('pmTable:    0x%x'%pmTable)
+    print('pmReserved: 0x%x'%pmReserved)
     for i in range(0, len(data), 16):
         for j in range(16):
             if i + j < len(data):
-                print '%02.2x'%ord(data[i+j]),
-        print
+                print('%02.2x'%ord(data[i+j]), end=' ')
+        print()
diff --git a/Mac/Demo/quicktime/VerySimplePlayer.py b/Mac/Demo/quicktime/VerySimplePlayer.py
index 2930eac..7c0fef0 100644
--- a/Mac/Demo/quicktime/VerySimplePlayer.py
+++ b/Mac/Demo/quicktime/VerySimplePlayer.py
@@ -18,7 +18,7 @@
 # XXXX maxbounds = (40, 40, 1000, 1000)
 
 def main():
-    print 'hello world' # XXXX
+    print('hello world') # XXXX
     # skip the toolbox initializations, already done
     # XXXX Should use gestalt here to check for quicktime version
     Qt.EnterMovies()
@@ -75,7 +75,7 @@
             whichWindow = Win.WhichWindow(message)
             if not whichWindow:
                 # Probably the console window. Print something, hope it helps.
-                print 'update'
+                print('update')
             else:
                 Qd.SetPort(whichWindow)
                 whichWindow.BeginUpdate()
diff --git a/Mac/Demo/resources/copyres.py b/Mac/Demo/resources/copyres.py
index da55b06..6c8a3c0 100644
--- a/Mac/Demo/resources/copyres.py
+++ b/Mac/Demo/resources/copyres.py
@@ -34,7 +34,7 @@
             id, type, name = res.GetResInfo()
             size = res.SizeResource()
             attrs = res.GetResAttrs()
-            print id, type, name, size, hex(attrs)
+            print(id, type, name, size, hex(attrs))
             res.DetachResource()
             UseResFile(output)
             try:
@@ -42,15 +42,15 @@
             except (RuntimeError, Res.Error) as msg:
                 res2 = None
             if res2:
-                print "Duplicate type+id, not copied"
+                print("Duplicate type+id, not copied")
                 print (res2.size, res2.data)
-                print res2.GetResInfo()
+                print(res2.GetResInfo())
                 if res2.HomeResFile() == output:
                     'OK'
                 elif res2.HomeResFile() == input:
                     'BAD!'
                 else:
-                    print 'Home:', res2.HomeResFile()
+                    print('Home:', res2.HomeResFile())
             else:
                 res.AddResource(type, id, name)
                 #res.SetResAttrs(attrs)
diff --git a/Mac/Demo/resources/listres.py b/Mac/Demo/resources/listres.py
index 6ce5779..8f391eb 100644
--- a/Mac/Demo/resources/listres.py
+++ b/Mac/Demo/resources/listres.py
@@ -7,7 +7,7 @@
     ntypes = Res.Count1Types()
     for itype in range(1, 1+ntypes):
         type = Res.Get1IndType(itype)
-        print "Type:", repr(type)
+        print("Type:", repr(type))
         nresources = Res.Count1Resources(type)
         for i in range(1, 1 + nresources):
             Res.SetResLoad(0)
@@ -19,7 +19,7 @@
     ntypes = Res.CountTypes()
     for itype in range(1, 1+ntypes):
         type = Res.GetIndType(itype)
-        print "Type:", repr(type)
+        print("Type:", repr(type))
         nresources = Res.CountResources(type)
         for i in range(1, 1 + nresources):
             Res.SetResLoad(0)
@@ -28,7 +28,7 @@
             info(res)
 
 def info(res):
-    print res.GetResInfo(), res.SizeResource(), decodeattrs(res.GetResAttrs())
+    print(res.GetResInfo(), res.SizeResource(), decodeattrs(res.GetResAttrs()))
 
 attrnames = {
         resChanged:     'Changed',
@@ -51,9 +51,9 @@
     return names
 
 def test():
-    print "=== Local resourcess ==="
+    print("=== Local resourcess ===")
     list1resources()
-    print "=== All resources ==="
+    print("=== All resources ===")
     listresources()
 
 if __name__ == '__main__':
diff --git a/Mac/Demo/sound/playaiff.py b/Mac/Demo/sound/playaiff.py
index 8237895..087f7c9 100644
--- a/Mac/Demo/sound/playaiff.py
+++ b/Mac/Demo/sound/playaiff.py
@@ -5,16 +5,16 @@
 
 fn = 'f:just samples:2ndbeat.aif'
 af = aifc.open(fn, 'r')
-print af.getparams()
-print 'nframes  =', af.getnframes()
-print 'nchannels =', af.getnchannels()
-print 'framerate =', af.getframerate()
+print(af.getparams())
+print('nframes  =', af.getnframes())
+print('nchannels =', af.getnchannels())
+print('framerate =', af.getframerate())
 nframes = min(af.getnframes(), 100000)
 frames = af.readframes(nframes)
-print 'len(frames) =', len(frames)
-print repr(frames[:100])
+print('len(frames) =', len(frames))
+print(repr(frames[:100]))
 frames = audioop.add(frames, '\x80'*len(frames), 1)
-print repr(frames[:100])
+print(repr(frames[:100]))
 
 import struct
 
@@ -27,7 +27,7 @@
                       0xFF,
                       60,
                       nframes)
-print repr(header1)
+print(repr(header1))
 header2 = struct.pack('llhlll', 0, 0, 0, 0, 0, 0)
 header3 = struct.pack('hhlll',
                       af.getsampwidth()*8,
@@ -35,7 +35,7 @@
                       0,
                       0,
                       0)
-print repr(header3)
+print(repr(header3))
 header = header1 + header2 + header3
 
 buffer = header + frames
diff --git a/Mac/Demo/textedit/ped.py b/Mac/Demo/textedit/ped.py
index 8cd4713..f28ae3c 100644
--- a/Mac/Demo/textedit/ped.py
+++ b/Mac/Demo/textedit/ped.py
@@ -50,7 +50,7 @@
         height = self.ted.nLines * self.ted.lineHeight
         vx = self.scalebarvalue(dr[0], dr[2]-dr[0], vr[0], vr[2])
         vy = self.scalebarvalue(dr[1], dr[1]+height, vr[1], vr[3])
-        print dr, vr, height, vx, vy
+        print(dr, vr, height, vx, vy)
         return None, vy
 
     def scrollbar_callback(self, which, what, value):
@@ -72,12 +72,12 @@
                 if delta >= 0:
                     delta = -self.ted.lineHeight
             self.ted.TEPinScroll(0, delta)
-            print 'SCROLL Y', delta
+            print('SCROLL Y', delta)
         else:
             pass # No horizontal scrolling
 
     def do_activate(self, onoff, evt):
-        print "ACTIVATE", onoff
+        print("ACTIVATE", onoff)
         ScrolledWindow.do_activate(self, onoff, evt)
         if onoff:
             self.ted.TEActivate()
@@ -121,7 +121,7 @@
         if not self.path:
             self.menu_save_as()
             return # Will call us recursively
-        print 'Saving to ', self.path
+        print('Saving to ', self.path)
         dhandle = self.ted.TEGetText()
         data = dhandle.data
         fp = open(self.path, 'wb')  # NOTE: wb, because data has CR for end-of-line