--- a/f2c.h0
+++ b/f2c.h0
@@ -7,21 +7,35 @@
 #ifndef F2C_INCLUDE
 #define F2C_INCLUDE
 
+#if defined(__alpha__) || defined(__sparc64__) || defined(__x86_64__) || defined(__ia64__)
+typedef int integer;
+typedef unsigned int uinteger;
+#else
 typedef long int integer;
 typedef unsigned long int uinteger;
+#endif
 typedef char *address;
 typedef short int shortint;
 typedef float real;
 typedef double doublereal;
 typedef struct { real r, i; } complex;
 typedef struct { doublereal r, i; } doublecomplex;
+#if defined(__alpha__) || defined(__sparc64__) || defined(__x86_64__) || defined(__ia64__)
+typedef int logical;
+#else
 typedef long int logical;
+#endif
 typedef short int shortlogical;
 typedef char logical1;
 typedef char integer1;
 #ifdef INTEGER_STAR_8	/* Adjust for integer*8. */
-typedef long long longint;		/* system-dependent */
-typedef unsigned long long ulongint;	/* system-dependent */
+#if defined(__alpha__) || defined(__sparc64__) || defined(__x86_64__) || defined(__ia64__)
+typedef long longint;		/* system-dependent */
+typedef unsigned long ulongint;	/* system-dependent */
+#else
+typedef long long longint;              /* system-dependent - oh yeah*/
+typedef unsigned long long ulongint;    /* system-dependent - oh yeah*/
+#endif
 #define qbit_clear(a,b)	((a) & ~((ulongint)1 << (b)))
 #define qbit_set(a,b)	((a) |  ((ulongint)1 << (b)))
 #endif
@@ -42,10 +56,16 @@
 typedef short ftnlen;
 typedef short ftnint;
 #else
+#if defined(__alpha__) || defined(__sparc64__) || defined(__x86_64__) || defined(__ia64__)
+typedef int flag;
+typedef int ftnlen;
+typedef int ftnint;
+#else
 typedef long int flag;
 typedef long int ftnlen;
 typedef long int ftnint;
 #endif
+#endif
 
 /*external read, write*/
 typedef struct
