anchor.diff:  MODULE MODHASH
   IMPLICIT NONE
   PRIVATE
  -PUBLIC :: CALCULATE_HASH
  +PUBLIC :: CALCULATE_HASH,HASHTABLE_INSERT_AT
  +PUBLIC :: HASHTABLE
  +PUBLIC :: HASHTABLE_INIT
  +TYPE HASHTABLE
  +  INTEGER(KIND=4)             :: TABLE_SIZE
  +  INTEGER(KIND=4)             :: RECORD_SIZE
  +  INTEGER(KIND=4)             :: RECORD_COUNT
  +  INTEGER(KIND=4),ALLOCATABLE :: INDICIES(:,:)
  +  INTEGER(KIND=1),ALLOCATABLE :: RECORDS(:)
  +END TYPE HASHTABLE
  +! ---------------------------------------------------------------------------------------------------------------------------------+
  +INTEGER(KIND=4)             :: HASHTABLE_COUNT, HASHTABLES_SIZE
  +TYPE(HASHTABLE),ALLOCATABLE :: HASHTABLES(:)
   ! ---------------------------------------------------------------------------------------------------------------------------------+
   INTERFACE CALCULATE_HASH
     MODULE PROCEDURE CALCULATE_HASH_INT1
     MODULE PROCEDURE CALCULATE_HASH_INT2
     MODULE PROCEDURE CALCULATE_HASH_INT4
     MODULE PROCEDURE CALCULATE_HASH_INT8
  +  MODULE PROCEDURE CALCULATE_HASH_REAL4
  +  MODULE PROCEDURE CALCULATE_HASH_REAL8
  +  MODULE PROCEDURE CALCULATE_HASH_STRING
   END INTERFACE CALCULATE_HASH
   ! ---------------------------------------------------------------------------------------------------------------------------------+
  +INTERFACE HASHTABLE_INSERT_AT
  +  MODULE PROCEDURE HASHTABLE_INSERT_INT1_AT
  +! MODULE PROCEDURE HASHTABLE_INSERT_INT2_AT
  +! MODULE PROCEDURE HASHTABLE_INSERT_INT4_AT
  +! MODULE PROCEDURE HASHTABLE_INSERT_INT8_AT
  +! MODULE PROCEDURE HASHTABLE_INSERT_REAL4_AT
  +! MODULE PROCEDURE HASHTABLE_INSERT_REAL8_AT
  +! MODULE PROCEDURE HASHTABLE_INSERT_STRING_AT
  +END INTERFACE HASHTABLE_INSERT_AT
  +! ---------------------------------------------------------------------------------------------------------------------------------+
                                                              CONTAINS
  +! ---------------------------------------------------------------------------------------------------------------------------------+
  +SUBROUTINE HASHTABLE_INSERT_INT1_AT(HTABLE,VALUE)
  +TYPE(HASHTABLE),INTENT(INOUT) :: HTABLE
  +INTEGER(KIND=1),INTENT(IN)    :: VALUE
  +END SUBROUTINE HASHTABLE_INSERT_INT1_AT
  +! ---------------------------------------------------------------------------------------------------------------------------------+
  +SUBROUTINE HASHTABLE_INIT(HTABLE, RECORDSIZE, TABLESIZE)
  +TYPE(HASHTABLE),INTENT(INOUT) :: HTABLE
  +INTEGER(KIND=4),INTENT(IN)    :: RECORDSIZE,TABLESIZE
  +  HTABLE%TABLE_SIZE   = TABLESIZE
  +  HTABLE%RECORD_SIZE  = RECORDSIZE
  +  HTABLE%RECORD_COUNT = 0
  +  IF (.NOT.ALLOCATED(HTABLE%INDICIES)) ALLOCATE(HTABLE%INDICIES(         3,TABLESIZE))
  +  IF (.NOT.ALLOCATED(HTABLE%RECORDS))  ALLOCATE( HTABLE%RECORDS(RECORDSIZE*TABLESIZE))
  +END SUBROUTINE HASHTABLE_INIT
   ! ---------------------------------------------------------------------------------------------------------------------------------+
   INTEGER(KIND=4) FUNCTION CALCULATE_HASH_INT1(VALUE)
   INTEGER(KIND=1),INTENT(IN)   :: VALUE
  
positive.code:   IVALUE=TRANSFER(VALUE,IVALUE)
    CALCULATE_HASH_REAL4 = CALCULATE_HASH_INT4(IVALUE)
  END FUNCTION CALCULATE_HASH_REAL4
  !
  END MODULE MODHASH
  ! ---------------------------------------------------------------------------------------------------------------------------------+
  PROGRAM HASHTEST
  USE MODHASH
  IMPLICIT NONE
  INTEGER(KIND=1),PARAMETER :: IDIV = 31
  INTEGER(KIND=1) :: INT1 = HUGE(INT1) / IDIV
  INTEGER(KIND=2) :: INT2 = HUGE(INT2) / IDIV
  INTEGER(KIND=4) :: INT4 = HUGE(INT4) / IDIV
  INTEGER(KIND=8) :: INT8 = HUGE(INT8) / IDIV
    WRITE(6,'("0*** ",A)') 'HASHTEST'
    WRITE(6,'("     HASH VALUE OF INT1 ",I20," = ",I20)') INT1, CALCULATE_HASH(INT1)
    WRITE(6,'("     HASH VALUE OF INT2 ",I20," = ",I20)') INT2, CALCULATE_HASH(INT2)
    WRITE(6,'("     HASH VALUE OF INT4 ",I20," = ",I20)') INT4, CALCULATE_HASH(INT4)
    WRITE(6,'("     HASH VALUE OF INT8 ",I20," = ",I20)') INT8, CALCULATE_HASH(INT8)
  END PROGRAM HASHTEST
  
  
negative.code: ! ---------------------------------------------------------------------------------------------------------------------------------+
  ! The MIT License (MIT)
  ! 
  ! Copyright (c) 2016 Daniel Everhart
  ! 
  ! Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files
  ! (the  "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify,
  